)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":31668,"deleted":true},"change_message_id":"6a03d29145db287a876087a4cf7b7f80bfb12a20","unresolved":true,"context_lines":[{"line_number":14,"context_line":"use legacy wsgi code because legacy wsgi code is complicated"},{"line_number":15,"context_line":"and v2 wsgi code uses legacy wsgi code very little."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Original purpose mentioned above is included in the refactoring"},{"line_number":18,"context_line":"at the same time."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I4ca0beda850ecd14d65d7bc1a59d465c5ecfeacb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"01dbd274_8dbc3159","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":17},"updated":"2022-04-27 05:05:57.000000000","message":"Please also add a description of the \"Content-Type\" request header and \"api_versions\" API changes to Commit Messeage.","commit_id":"0da47d0ff5b8eaded857eb5f72c17558556a1c00"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"09f24e83976a6f3f87a010e36b35bb5f2fd00034","unresolved":true,"context_lines":[{"line_number":14,"context_line":"use legacy wsgi code because legacy wsgi code is complicated"},{"line_number":15,"context_line":"and v2 wsgi code uses legacy wsgi code very little."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Original purpose mentioned above is included in the refactoring"},{"line_number":18,"context_line":"at the same time."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I4ca0beda850ecd14d65d7bc1a59d465c5ecfeacb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"c12f85ba_a098a08b","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":17},"in_reply_to":"01dbd274_8dbc3159","updated":"2022-04-27 22:17:38.000000000","message":"I see. I will fix.","commit_id":"0da47d0ff5b8eaded857eb5f72c17558556a1c00"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"a8e6803c5f7a3866fa691c81c65e13442be1c67d","unresolved":false,"context_lines":[{"line_number":14,"context_line":"use legacy wsgi code because legacy wsgi code is complicated"},{"line_number":15,"context_line":"and v2 wsgi code uses legacy wsgi code very little."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Original purpose mentioned above is included in the refactoring"},{"line_number":18,"context_line":"at the same time."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: I4ca0beda850ecd14d65d7bc1a59d465c5ecfeacb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"12b0a3d4_fdec9e55","line":18,"range":{"start_line":17,"start_character":0,"end_line":18,"end_character":17},"in_reply_to":"c12f85ba_a098a08b","updated":"2022-05-10 05:13:55.000000000","message":"Done","commit_id":"0da47d0ff5b8eaded857eb5f72c17558556a1c00"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"4422e8557e3cd64f0082268dbf9f139bbf1329b0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"9564bc94_57b9cd79","updated":"2022-04-04 23:45:45.000000000","message":"Thank you for the review.","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"14e86936277bed4549b382d4c7214b8345d14f47","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"30a7f916_a1ff01e6","updated":"2022-04-06 03:02:40.000000000","message":"Thank you for the review.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"209c66edaff767d24d39f9f775b2e44a0dc179fb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"acc85c31_0818a089","updated":"2022-04-07 04:37:46.000000000","message":"Thank you for the review.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"a954b0ea7ff17375aaac4a37aa735d65bf45408b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"360731da_7a6cf0fd","updated":"2022-04-14 06:34:34.000000000","message":"Thank you for the review.","commit_id":"9fba4e315a938efe5166bd76fba5080b3078b04f"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9f3e2c71367be1ebef713fbe4e35bc674431bb84","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7fd505d5_e382302c","updated":"2022-04-19 22:16:38.000000000","message":"Thank you for the review.","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"09f24e83976a6f3f87a010e36b35bb5f2fd00034","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"af74e134_634f4445","updated":"2022-04-27 22:17:38.000000000","message":"Thank you for the review.","commit_id":"0da47d0ff5b8eaded857eb5f72c17558556a1c00"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"a8e6803c5f7a3866fa691c81c65e13442be1c67d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ce5689c4_43bfd8f4","updated":"2022-05-10 05:13:55.000000000","message":"LGTM","commit_id":"00d8f69f09da76095959426ca529d527c2984b7a"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"fbcfe84f8ad74edafac3781f5850fb2e56012149","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"b45a97de_c3af8995","updated":"2022-05-17 12:59:03.000000000","message":"LGTM.","commit_id":"00d8f69f09da76095959426ca529d527c2984b7a"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"3e6767035a96913af97b25e1de39ec496355199b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1d11a608_44e27d82","updated":"2022-05-02 06:14:15.000000000","message":"recheck","commit_id":"00d8f69f09da76095959426ca529d527c2984b7a"}],"tacker/sol_refactored/api/wsgi.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"f9e7c00e12388928831caa53253eb9c7f93cee29","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        action_args \u003d request.environ[\u0027wsgiorg.routing_args\u0027][1].copy()"},{"line_number":168,"context_line":"        action \u003d action_args.pop(\u0027action\u0027, None)"},{"line_number":169,"context_line":"        action_args.pop(\u0027controller\u0027, None)"},{"line_number":170,"context_line":"        action_args.pop(\u0027format\u0027, None)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        body \u003d self._deserialize_body(request, action)"},{"line_number":173,"context_line":"        if body is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"0cea6546_e2ec95eb","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":39},"updated":"2022-04-04 08:18:55.000000000","message":"Is this \u0027format\u0027 popping process necessary?","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"4422e8557e3cd64f0082268dbf9f139bbf1329b0","unresolved":true,"context_lines":[{"line_number":167,"context_line":"        action_args \u003d request.environ[\u0027wsgiorg.routing_args\u0027][1].copy()"},{"line_number":168,"context_line":"        action \u003d action_args.pop(\u0027action\u0027, None)"},{"line_number":169,"context_line":"        action_args.pop(\u0027controller\u0027, None)"},{"line_number":170,"context_line":"        action_args.pop(\u0027format\u0027, None)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        body \u003d self._deserialize_body(request, action)"},{"line_number":173,"context_line":"        if body is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"73d8bd30_cc85570b","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":39},"in_reply_to":"0cea6546_e2ec95eb","updated":"2022-04-04 23:45:45.000000000","message":"not necessary. I will remove.","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"6aafa23a3511b742f216b159f4f7619cb2bd5804","unresolved":false,"context_lines":[{"line_number":167,"context_line":"        action_args \u003d request.environ[\u0027wsgiorg.routing_args\u0027][1].copy()"},{"line_number":168,"context_line":"        action \u003d action_args.pop(\u0027action\u0027, None)"},{"line_number":169,"context_line":"        action_args.pop(\u0027controller\u0027, None)"},{"line_number":170,"context_line":"        action_args.pop(\u0027format\u0027, None)"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"        body \u003d self._deserialize_body(request, action)"},{"line_number":173,"context_line":"        if body is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba9b589c_b28b3723","line":170,"range":{"start_line":170,"start_character":8,"end_line":170,"end_character":39},"in_reply_to":"73d8bd30_cc85570b","updated":"2022-04-05 02:20:35.000000000","message":"Done","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"f9e7c00e12388928831caa53253eb9c7f93cee29","unresolved":true,"context_lines":[{"line_number":197,"context_line":"            except Exception:"},{"line_number":198,"context_line":"                raise sol_ex.MalformedRequestBody()"},{"line_number":199,"context_line":"        elif content_type \u003d\u003d \u0027application/zip\u0027:"},{"line_number":200,"context_line":"            return request.body_file"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class SolAPIRouter(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"764cb08e_e93b78d5","line":200,"updated":"2022-04-04 08:18:55.000000000","message":"As with \u0027application/json\u0027, do you need to consider the possibility of exceptions?","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"4422e8557e3cd64f0082268dbf9f139bbf1329b0","unresolved":true,"context_lines":[{"line_number":197,"context_line":"            except Exception:"},{"line_number":198,"context_line":"                raise sol_ex.MalformedRequestBody()"},{"line_number":199,"context_line":"        elif content_type \u003d\u003d \u0027application/zip\u0027:"},{"line_number":200,"context_line":"            return request.body_file"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class SolAPIRouter(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9eee2fc6_e6078568","line":200,"in_reply_to":"764cb08e_e93b78d5","updated":"2022-04-04 23:45:45.000000000","message":"it is not necessary because error is not happen if body exists. (if error occurs, it is internal server error.)","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"6aafa23a3511b742f216b159f4f7619cb2bd5804","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            except Exception:"},{"line_number":198,"context_line":"                raise sol_ex.MalformedRequestBody()"},{"line_number":199,"context_line":"        elif content_type \u003d\u003d \u0027application/zip\u0027:"},{"line_number":200,"context_line":"            return request.body_file"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class SolAPIRouter(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"b975596e_bfa77ef7","line":200,"in_reply_to":"9eee2fc6_e6078568","updated":"2022-04-05 02:20:35.000000000","message":"I see.","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"45786074dc5d93954dbafbe9addca172e5dba4a6","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            return"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e1c9233e_d89dcabe","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":63},"updated":"2022-04-07 04:15:19.000000000","message":"If the Content-Type header is not set, it is better not to return the error as in the case of Accept header.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"8797d192e2aa350859b216b60e1ba9007adc7c1c","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            return"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7757ed51_2b1f2b70","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":63},"in_reply_to":"265c40aa_41d864e4","updated":"2022-04-19 07:41:53.000000000","message":"If the user doesn\u0027t set the \"Content-Type\" header, it seems to set \"Content-Type: text/plain\" on the Tacker side after receiving the request.\nWould you please change it to allow \"text/plain\" for all v2 LCM APIs?\nIf the user intentionally sets \"Content-Type: text/plain\", 400[Malformed request body.] may be returned instead of 406, but it is not a major issue at the moment.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"2af2bbb5c968b8ecf175030ce3729f5080076a8f","unresolved":false,"context_lines":[{"line_number":186,"context_line":"            return"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1769dd81_65c544e5","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":63},"in_reply_to":"339b5779_8a757c4a","updated":"2022-04-20 23:24:35.000000000","message":"Done","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9f3e2c71367be1ebef713fbe4e35bc674431bb84","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            return"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"339b5779_8a757c4a","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":63},"in_reply_to":"7757ed51_2b1f2b70","updated":"2022-04-19 22:16:38.000000000","message":"OK, I see. I will change.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"209c66edaff767d24d39f9f775b2e44a0dc179fb","unresolved":true,"context_lines":[{"line_number":186,"context_line":"            return"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"265c40aa_41d864e4","line":190,"range":{"start_line":189,"start_character":8,"end_line":190,"end_character":63},"in_reply_to":"e1c9233e_d89dcabe","updated":"2022-04-07 04:37:46.000000000","message":"OK, I see. I will change.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"45786074dc5d93954dbafbe9addca172e5dba4a6","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"},{"line_number":194,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a131f4a_2052e34c","line":191,"updated":"2022-04-07 04:15:19.000000000","message":"The error code is 415(Unsupported Media Type) better than 406(Not Acceptable).","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"209c66edaff767d24d39f9f775b2e44a0dc179fb","unresolved":true,"context_lines":[{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"},{"line_number":194,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"e8694b68_60ce3134","line":191,"in_reply_to":"3a131f4a_2052e34c","updated":"2022-04-07 04:37:46.000000000","message":"I see. I will change.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"8797d192e2aa350859b216b60e1ba9007adc7c1c","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        content_type \u003d request.content_type"},{"line_number":189,"context_line":"        if (content_type not in"},{"line_number":190,"context_line":"                self.controller.allowed_content_types(action)):"},{"line_number":191,"context_line":"            raise sol_ex.NotAllowedContentType(header\u003d\u0027Content-Type\u0027)"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        if content_type \u003d\u003d \u0027application/json\u0027:"},{"line_number":194,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5eff2255_e56fab6f","line":191,"in_reply_to":"e8694b68_60ce3134","updated":"2022-04-19 07:41:53.000000000","message":"Done","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"fc4d991632c8367e5a82d8081d9094cfe10dd48a","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        or the routed WSGI app\u0027s response."},{"line_number":251,"context_line":"        \"\"\""},{"line_number":252,"context_line":"        match \u003d req.environ[\u0027wsgiorg.routing_args\u0027][1]"},{"line_number":253,"context_line":"        if not match:"},{"line_number":254,"context_line":"            language \u003d req.best_match_language()"},{"line_number":255,"context_line":"            msg \u003d \u0027The resource could not be found.\u0027"},{"line_number":256,"context_line":"            msg \u003d i18n.translate(msg, language)"},{"line_number":257,"context_line":"            return webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":258,"context_line":"        app \u003d match[\u0027controller\u0027]"},{"line_number":259,"context_line":"        return app"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3bda4fc8_86d2031a","line":257,"range":{"start_line":253,"start_character":0,"end_line":257,"end_character":58},"updated":"2022-04-06 01:47:03.000000000","message":"When I checked the operation of this route in my local environment, it seemed that there were the following differences compared to other 404 routes.\nIs this intentional?\n\n* Content-Type of the response is \"application/json\" instead of \"application/problem+json\"\n* Along with above, the error details of the body are stored in \"message\" instead of \"detail\"\n* The information 404 is stored in \"code\" instead of \"status\"\n* \"message\" contains \"\u003cbr /\u003e\u003cbr /\u003e\\n\\n\\n\" at the end\n\nPOST pattern(this route)\n```\n---Request---\nPOST /vnflcm/v2/dummy HTTP/1.1\nAccept: application/json\nContent-Type: application/json\nVersion: 2.0.0\n{\n    \"vnfdId\": \"7fdcad2a-f523-402b-8187-dd82b45332c2\"\n}\n\n---Response---\nHTTP/1.1 404 Not Found\nContent-Type: application/json\n{\n    \"code\": \"404 Not Found\",\n    \"message\": \"The resource could not be found.\u003cbr /\u003e\u003cbr /\u003e\\n\\n\\n\",\n    \"title\": \"Not Found\"\n}\n```\n\nGET pattern(other 404 route)\n```\n---Request---\nGET /vnflcm/v2/vnf_instances/hoge?all_fields HTTP/1.1\nAccept: application/json\nVersion: 2.0.0\n\n---Response---\nHTTP/1.1 404 Not Found\nContent-Type: application/problem+json\nVersion: 2.0.0\n{\n    \"detail\": \"VnfInstance hoge not found.\",\n    \"status\": 404,\n    \"title\": \"Not Found\"\n}\n```","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"14e86936277bed4549b382d4c7214b8345d14f47","unresolved":true,"context_lines":[{"line_number":250,"context_line":"        or the routed WSGI app\u0027s response."},{"line_number":251,"context_line":"        \"\"\""},{"line_number":252,"context_line":"        match \u003d req.environ[\u0027wsgiorg.routing_args\u0027][1]"},{"line_number":253,"context_line":"        if not match:"},{"line_number":254,"context_line":"            language \u003d req.best_match_language()"},{"line_number":255,"context_line":"            msg \u003d \u0027The resource could not be found.\u0027"},{"line_number":256,"context_line":"            msg \u003d i18n.translate(msg, language)"},{"line_number":257,"context_line":"            return webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":258,"context_line":"        app \u003d match[\u0027controller\u0027]"},{"line_number":259,"context_line":"        return app"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"f71fef00_8ef2bdda","line":257,"range":{"start_line":253,"start_character":0,"end_line":257,"end_character":58},"in_reply_to":"3bda4fc8_86d2031a","updated":"2022-04-06 03:02:40.000000000","message":"It is intentional. URL is not match with any of SOL003 5.2, so it is considered it is not part of SOL003.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"78aefd0a384e7636635eae2ad777c9e632da16b2","unresolved":false,"context_lines":[{"line_number":250,"context_line":"        or the routed WSGI app\u0027s response."},{"line_number":251,"context_line":"        \"\"\""},{"line_number":252,"context_line":"        match \u003d req.environ[\u0027wsgiorg.routing_args\u0027][1]"},{"line_number":253,"context_line":"        if not match:"},{"line_number":254,"context_line":"            language \u003d req.best_match_language()"},{"line_number":255,"context_line":"            msg \u003d \u0027The resource could not be found.\u0027"},{"line_number":256,"context_line":"            msg \u003d i18n.translate(msg, language)"},{"line_number":257,"context_line":"            return webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":258,"context_line":"        app \u003d match[\u0027controller\u0027]"},{"line_number":259,"context_line":"        return app"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"35dc057c_27958216","line":257,"range":{"start_line":253,"start_character":0,"end_line":257,"end_character":58},"in_reply_to":"f71fef00_8ef2bdda","updated":"2022-04-07 00:17:21.000000000","message":"Thank you for the answer. I see.","commit_id":"f00c2154c60abc7250ce6752e1892a70510a2a74"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"d36e7b0b21f261667629c6c435a2bcb222f0f769","unresolved":true,"context_lines":[{"line_number":269,"context_line":"    def allowed_content_types(self, action):"},{"line_number":270,"context_line":"        # NOTE: if other than \u0027application/json\u0027 is expected depending"},{"line_number":271,"context_line":"        # on action, override this method in the subclass."},{"line_number":272,"context_line":"        return [\u0027application/json\u0027]"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def allowed_accept(self, action):"},{"line_number":275,"context_line":"        # NOTE: if other than \u0027application/json\u0027 is expected depending"}],"source_content_type":"text/x-python","patch_set":3,"id":"9595908a_0e6a7632","line":272,"updated":"2022-04-14 05:40:48.000000000","message":"According to SOL003, the Content-Type of Modify request is \"application/mergepatch+json\".\nIn case of Modify request, \"application/mergepatch+json\" should also be allowed.\nSince python-tackerclient sets the Content-Type of Modify request to \"application/json\", it is not necessary to reject \"application/json\" at present.","commit_id":"9fba4e315a938efe5166bd76fba5080b3078b04f"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"8797d192e2aa350859b216b60e1ba9007adc7c1c","unresolved":false,"context_lines":[{"line_number":269,"context_line":"    def allowed_content_types(self, action):"},{"line_number":270,"context_line":"        # NOTE: if other than \u0027application/json\u0027 is expected depending"},{"line_number":271,"context_line":"        # on action, override this method in the subclass."},{"line_number":272,"context_line":"        return [\u0027application/json\u0027]"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def allowed_accept(self, action):"},{"line_number":275,"context_line":"        # NOTE: if other than \u0027application/json\u0027 is expected depending"}],"source_content_type":"text/x-python","patch_set":3,"id":"f11d266f_c308e121","line":272,"in_reply_to":"8aab1d9d_b8966ab3","updated":"2022-04-19 07:41:53.000000000","message":"Done","commit_id":"9fba4e315a938efe5166bd76fba5080b3078b04f"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"a954b0ea7ff17375aaac4a37aa735d65bf45408b","unresolved":true,"context_lines":[{"line_number":269,"context_line":"    def allowed_content_types(self, action):"},{"line_number":270,"context_line":"        # NOTE: if other than \u0027application/json\u0027 is expected depending"},{"line_number":271,"context_line":"        # on action, override this method in the subclass."},{"line_number":272,"context_line":"        return [\u0027application/json\u0027]"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    def allowed_accept(self, action):"},{"line_number":275,"context_line":"        # NOTE: if other than \u0027application/json\u0027 is expected depending"}],"source_content_type":"text/x-python","patch_set":3,"id":"8aab1d9d_b8966ab3","line":272,"in_reply_to":"9595908a_0e6a7632","updated":"2022-04-14 06:34:34.000000000","message":"I see. I will fix.","commit_id":"9fba4e315a938efe5166bd76fba5080b3078b04f"}],"tacker/sol_refactored/common/exceptions.py":[{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"f9e7c00e12388928831caa53253eb9c7f93cee29","unresolved":true,"context_lines":[{"line_number":330,"context_line":"    message \u003d _(\"This operation is not currently supported.\")"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"class NotAllowedContentType(SolHttpError400):"},{"line_number":334,"context_line":"    message \u003d _(\"Content type specified in \u0027%(header)s\u0027 header\""},{"line_number":335,"context_line":"                \"is not allowed.\")"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"112e37e2_c813ad22","line":333,"range":{"start_line":333,"start_character":28,"end_line":333,"end_character":43},"updated":"2022-04-04 08:18:55.000000000","message":"According to \"SOL013 6.4 Common error situations\", I think you should set \"SolHttpError406\", what about?","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"4422e8557e3cd64f0082268dbf9f139bbf1329b0","unresolved":true,"context_lines":[{"line_number":330,"context_line":"    message \u003d _(\"This operation is not currently supported.\")"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"class NotAllowedContentType(SolHttpError400):"},{"line_number":334,"context_line":"    message \u003d _(\"Content type specified in \u0027%(header)s\u0027 header\""},{"line_number":335,"context_line":"                \"is not allowed.\")"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"2785abae_916cdc68","line":333,"range":{"start_line":333,"start_character":28,"end_line":333,"end_character":43},"in_reply_to":"112e37e2_c813ad22","updated":"2022-04-04 23:45:45.000000000","message":"you are right. I will fix.","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"6aafa23a3511b742f216b159f4f7619cb2bd5804","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    message \u003d _(\"This operation is not currently supported.\")"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"class NotAllowedContentType(SolHttpError400):"},{"line_number":334,"context_line":"    message \u003d _(\"Content type specified in \u0027%(header)s\u0027 header\""},{"line_number":335,"context_line":"                \"is not allowed.\")"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f08c16ac_216f5301","line":333,"range":{"start_line":333,"start_character":28,"end_line":333,"end_character":43},"in_reply_to":"2785abae_916cdc68","updated":"2022-04-05 02:20:35.000000000","message":"Done","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"f9e7c00e12388928831caa53253eb9c7f93cee29","unresolved":true,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"class NotAllowedContentType(SolHttpError400):"},{"line_number":334,"context_line":"    message \u003d _(\"Content type specified in \u0027%(header)s\u0027 header\""},{"line_number":335,"context_line":"                \"is not allowed.\")"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"class MalformedRequestBody(SolHttpError400):"}],"source_content_type":"text/x-python","patch_set":1,"id":"558eaaae_551356ad","line":335,"range":{"start_line":334,"start_character":56,"end_line":335,"end_character":19},"updated":"2022-04-04 08:18:55.000000000","message":"It seems to be missing space between \"header\" and \"is\".","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"4422e8557e3cd64f0082268dbf9f139bbf1329b0","unresolved":true,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"class NotAllowedContentType(SolHttpError400):"},{"line_number":334,"context_line":"    message \u003d _(\"Content type specified in \u0027%(header)s\u0027 header\""},{"line_number":335,"context_line":"                \"is not allowed.\")"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"class MalformedRequestBody(SolHttpError400):"}],"source_content_type":"text/x-python","patch_set":1,"id":"959bb8a5_9de1189d","line":335,"range":{"start_line":334,"start_character":56,"end_line":335,"end_character":19},"in_reply_to":"558eaaae_551356ad","updated":"2022-04-04 23:45:45.000000000","message":"I will fix.","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31072,"name":"Hiroo Kitamura","email":"hiroo.kitamura@ntt-at.co.jp","username":"Hiroo.Kitamura"},"change_message_id":"6aafa23a3511b742f216b159f4f7619cb2bd5804","unresolved":false,"context_lines":[{"line_number":331,"context_line":""},{"line_number":332,"context_line":""},{"line_number":333,"context_line":"class NotAllowedContentType(SolHttpError400):"},{"line_number":334,"context_line":"    message \u003d _(\"Content type specified in \u0027%(header)s\u0027 header\""},{"line_number":335,"context_line":"                \"is not allowed.\")"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"class MalformedRequestBody(SolHttpError400):"}],"source_content_type":"text/x-python","patch_set":1,"id":"85b8c576_0ac27dda","line":335,"range":{"start_line":334,"start_character":56,"end_line":335,"end_character":19},"in_reply_to":"959bb8a5_9de1189d","updated":"2022-04-05 02:20:35.000000000","message":"Done","commit_id":"ccc6ad1dfff768a12c20ec31d95307021e9774ba"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"8797d192e2aa350859b216b60e1ba9007adc7c1c","unresolved":true,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"class NotAllowedContentType(SolHttpError406):"},{"line_number":339,"context_line":"    message \u003d _(\"Content type specified in \u0027Accept\u0027 header\""},{"line_number":340,"context_line":"                \" is not allowed.\")"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class NotSupportedContentType(SolHttpError415):"}],"source_content_type":"text/x-python","patch_set":4,"id":"c95bcc03_308431ef","line":340,"range":{"start_line":339,"start_character":4,"end_line":340,"end_character":35},"updated":"2022-04-19 07:41:53.000000000","message":"Since the client application may set a MIME type that the user did not intend, could you please add the MIME type that actually caused the error to the \"detail\" message?\nThat is easier for the user to understand.","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"2af2bbb5c968b8ecf175030ce3729f5080076a8f","unresolved":false,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"class NotAllowedContentType(SolHttpError406):"},{"line_number":339,"context_line":"    message \u003d _(\"Content type specified in \u0027Accept\u0027 header\""},{"line_number":340,"context_line":"                \" is not allowed.\")"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class NotSupportedContentType(SolHttpError415):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0d481bbc_166289c2","line":340,"range":{"start_line":339,"start_character":4,"end_line":340,"end_character":35},"in_reply_to":"98c8c076_1c68b16e","updated":"2022-04-20 23:24:35.000000000","message":"Done","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9f3e2c71367be1ebef713fbe4e35bc674431bb84","unresolved":true,"context_lines":[{"line_number":336,"context_line":""},{"line_number":337,"context_line":""},{"line_number":338,"context_line":"class NotAllowedContentType(SolHttpError406):"},{"line_number":339,"context_line":"    message \u003d _(\"Content type specified in \u0027Accept\u0027 header\""},{"line_number":340,"context_line":"                \" is not allowed.\")"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class NotSupportedContentType(SolHttpError415):"}],"source_content_type":"text/x-python","patch_set":4,"id":"98c8c076_1c68b16e","line":340,"range":{"start_line":339,"start_character":4,"end_line":340,"end_character":35},"in_reply_to":"c95bcc03_308431ef","updated":"2022-04-19 22:16:38.000000000","message":"I see. I will fix.","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"8797d192e2aa350859b216b60e1ba9007adc7c1c","unresolved":true,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class NotSupportedContentType(SolHttpError415):"},{"line_number":344,"context_line":"    message \u003d _(\"Content type specified in \u0027Content-Type\u0027 header\""},{"line_number":345,"context_line":"                \" is not allowed.\")"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"class MalformedRequestBody(SolHttpError400):"}],"source_content_type":"text/x-python","patch_set":4,"id":"262b9626_4de94711","line":345,"range":{"start_line":344,"start_character":4,"end_line":345,"end_character":35},"updated":"2022-04-19 07:41:53.000000000","message":"ditto","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"},{"author":{"_account_id":31668,"deleted":true},"change_message_id":"2af2bbb5c968b8ecf175030ce3729f5080076a8f","unresolved":false,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class NotSupportedContentType(SolHttpError415):"},{"line_number":344,"context_line":"    message \u003d _(\"Content type specified in \u0027Content-Type\u0027 header\""},{"line_number":345,"context_line":"                \" is not allowed.\")"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"class MalformedRequestBody(SolHttpError400):"}],"source_content_type":"text/x-python","patch_set":4,"id":"f9e41df9_817700d8","line":345,"range":{"start_line":344,"start_character":4,"end_line":345,"end_character":35},"in_reply_to":"0567bd0d_b629ae04","updated":"2022-04-20 23:24:35.000000000","message":"Done","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"},{"author":{"_account_id":4149,"name":"Itsuro Oda","email":"oda@valinux.co.jp","username":"oda-g"},"change_message_id":"9f3e2c71367be1ebef713fbe4e35bc674431bb84","unresolved":true,"context_lines":[{"line_number":341,"context_line":""},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"class NotSupportedContentType(SolHttpError415):"},{"line_number":344,"context_line":"    message \u003d _(\"Content type specified in \u0027Content-Type\u0027 header\""},{"line_number":345,"context_line":"                \" is not allowed.\")"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"class MalformedRequestBody(SolHttpError400):"}],"source_content_type":"text/x-python","patch_set":4,"id":"0567bd0d_b629ae04","line":345,"range":{"start_line":344,"start_character":4,"end_line":345,"end_character":35},"in_reply_to":"262b9626_4de94711","updated":"2022-04-19 22:16:38.000000000","message":"I see. I will fix.","commit_id":"15d2e110bc8073e868c3b02cd40964cec1498b53"}]}
