)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"2658608a83b72faf100aec63b5a132a1a1c3310c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Haiwei Xu \u003cxu-haiwei@mxw.nes.nec.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-06-18 13:25:05 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add API schema for v3 remote_consoles API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By defining the API schema, it is possible to separate the validation"},{"line_number":10,"context_line":"code from the API method. The API method can be more simple."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1ae5cdf2_2f9c035d","line":7,"updated":"2014-06-18 04:35:16.000000000","message":"Now we have decided v3 API is never exposed as v3 and v2.1 will use v3 implementation internally.\nSo it is better to add v2.1 in the commit message like\n\n Add API schema for v2.1/v3 remote_consoles API","commit_id":"b595a9aa21471029bae80ebf659d9a2d2c09256d"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"970493b2d1e5189a578fac6fedcad1c231e16c62","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Haiwei Xu \u003cxu-haiwei@mxw.nes.nec.co.jp\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-06-18 13:25:05 +0900"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add API schema for v3 remote_consoles API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"By defining the API schema, it is possible to separate the validation"},{"line_number":10,"context_line":"code from the API method. The API method can be more simple."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"1ae5cdf2_4fda2fea","line":7,"in_reply_to":"1ae5cdf2_2f9c035d","updated":"2014-06-18 04:46:38.000000000","message":"Done.","commit_id":"b595a9aa21471029bae80ebf659d9a2d2c09256d"}],"nova/api/openstack/compute/plugins/v3/remote_consoles.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a331e82acb951747b8c16661413b418221045217","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @extensions.expected_errors((400, 404, 409, 501))"},{"line_number":38,"context_line":"    @wsgi.action(\u0027get_vnc_console\u0027)"},{"line_number":39,"context_line":"    @validation.schema(request_body_schema\u003d"},{"line_number":40,"context_line":"                       remote_consoles_schema.get_vnc_console)"},{"line_number":41,"context_line":"    def get_vnc_console(self, req, id, body):"},{"line_number":42,"context_line":"        \"\"\"Get text console output.\"\"\""},{"line_number":43,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfX0%3D","line":40,"updated":"2014-01-13 11:39:57.000000000","message":"request_body_schema is not necessary and the module remote_consoles_schama.py should be renamed to remote_consoles.py.\n\nref: http://lists.openstack.org/pipermail/openstack-dev/2014-January/024067.html","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"13aa198290bb679d156f6ff1a2762d22054cae92","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    @extensions.expected_errors((400, 404, 409, 501))"},{"line_number":38,"context_line":"    @wsgi.action(\u0027get_vnc_console\u0027)"},{"line_number":39,"context_line":"    @validation.schema(request_body_schema\u003d"},{"line_number":40,"context_line":"                       remote_consoles_schema.get_vnc_console)"},{"line_number":41,"context_line":"    def get_vnc_console(self, req, id, body):"},{"line_number":42,"context_line":"        \"\"\"Get text console output.\"\"\""},{"line_number":43,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Faf8%3D","line":40,"in_reply_to":"AAAAUH%2F%2FfX0%3D","updated":"2014-01-14 00:48:05.000000000","message":"Done.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a331e82acb951747b8c16661413b418221045217","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":65,"context_line":"    @wsgi.action(\u0027get_spice_console\u0027)"},{"line_number":66,"context_line":"    @validation.schema(request_body_schema\u003d"},{"line_number":67,"context_line":"                       remote_consoles_schema.get_spice_console)"},{"line_number":68,"context_line":"    def get_spice_console(self, req, id, body):"},{"line_number":69,"context_line":"        \"\"\"Get text console output.\"\"\""},{"line_number":70,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfXk%3D","line":67,"updated":"2014-01-13 11:39:57.000000000","message":"ditto","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5dca7470083408cb9cecce23837d7829b4bb643","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":65,"context_line":"    @wsgi.action(\u0027get_spice_console\u0027)"},{"line_number":66,"context_line":"    @validation.schema(request_body_schema\u003d"},{"line_number":67,"context_line":"                       remote_consoles_schema.get_spice_console)"},{"line_number":68,"context_line":"    def get_spice_console(self, req, id, body):"},{"line_number":69,"context_line":"        \"\"\"Get text console output.\"\"\""},{"line_number":70,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FhwM%3D","line":67,"updated":"2014-01-12 15:32:21.000000000","message":"what if the driver does not support the specific remote console type. At the moment only kvm and qemu support spice. I understand that this is not something handled in this patch set, but maybe we can actually think of the driver returning the support console support. Any thoughts?","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"13aa198290bb679d156f6ff1a2762d22054cae92","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":65,"context_line":"    @wsgi.action(\u0027get_spice_console\u0027)"},{"line_number":66,"context_line":"    @validation.schema(request_body_schema\u003d"},{"line_number":67,"context_line":"                       remote_consoles_schema.get_spice_console)"},{"line_number":68,"context_line":"    def get_spice_console(self, req, id, body):"},{"line_number":69,"context_line":"        \"\"\"Get text console output.\"\"\""},{"line_number":70,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Faa8%3D","line":67,"in_reply_to":"AAAAUH%2F%2FajQ%3D","updated":"2014-01-14 00:48:05.000000000","message":"I agree with Ken\u0027ichi, maybe we should consider that question after the schema patch is merged.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ee846698b24147d2ad55a89d0fbf700d85c26b8f","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    @extensions.expected_errors((400, 404, 409))"},{"line_number":65,"context_line":"    @wsgi.action(\u0027get_spice_console\u0027)"},{"line_number":66,"context_line":"    @validation.schema(request_body_schema\u003d"},{"line_number":67,"context_line":"                       remote_consoles_schema.get_spice_console)"},{"line_number":68,"context_line":"    def get_spice_console(self, req, id, body):"},{"line_number":69,"context_line":"        \"\"\"Get text console output.\"\"\""},{"line_number":70,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FajQ%3D","line":67,"in_reply_to":"AAAAUH%2F%2FhwM%3D","updated":"2014-01-14 00:21:05.000000000","message":"Hi grayk,\n\nThat is a good point.\nI think if a driver does not support it, NotImplementedError should happen in the following get_spice_console() and this API should raise webob.exc.HTTPNotImplemented.\n\nBut now, there is not this except at line 81-84. I feel we should consider this in the other patch.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":7882,"name":"Yuiko Takada Mori","email":"yuiko-mori@nec.com","username":"YuikoTakada"},"change_message_id":"7fd58e92f16517c2fa6ea16dd558607f484c961e","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        # If type is not supplied or unknown, get_spice_console below will cope"},{"line_number":72,"context_line":"        console_type \u003d body[\u0027get_spice_console\u0027].get(\u0027type\u0027)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"        try:"},{"line_number":75,"context_line":"            instance \u003d self.compute_api.get(context, id, want_objects\u003dTrue)"},{"line_number":76,"context_line":"            output \u003d self.compute_api.get_spice_console(context,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2FOKE%3D","line":73,"updated":"2014-01-16 08:25:45.000000000","message":"body[\u0027get_spice_console\u0027][\u0027type\u0027]\nis more better because \u0027type\u0027 is required.","commit_id":"561dc88adcce6a40affe0f26417a39fce9fd57cd"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"86c7dd54ab8c5a1428bd7737ea0e851420a477a9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                                      instance,"},{"line_number":49,"context_line":"                                                      console_type)"},{"line_number":50,"context_line":"        except exception.ConsoleTypeInvalid as e:"},{"line_number":51,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":52,"context_line":"        except exception.ConsoleTypeUnavailable as e:"},{"line_number":53,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":54,"context_line":"        except exception.InstanceNotFound as e:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_d1d8bdf2","side":"PARENT","line":51,"updated":"2014-06-25 03:38:11.000000000","message":"I think we still need to handle this exception as it can occur if the console type specified is valid, but the console type is configured to be disabled","commit_id":"b2ce11bab0adf6d2804f497a5f11e796f72920d3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"41a293e33f3f218b958f787a177a92d49ab0d6fc","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                                      instance,"},{"line_number":49,"context_line":"                                                      console_type)"},{"line_number":50,"context_line":"        except exception.ConsoleTypeInvalid as e:"},{"line_number":51,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":52,"context_line":"        except exception.ConsoleTypeUnavailable as e:"},{"line_number":53,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":54,"context_line":"        except exception.InstanceNotFound as e:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_845515fc","side":"PARENT","line":51,"in_reply_to":"1ae5cdf2_d1d8bdf2","updated":"2014-06-25 03:48:32.000000000","message":"Oh, nice catch.\n\nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L4058\n\nand I guess the above case would fit exception.ConsoleTypeUnavailable ideally, that is another topic.","commit_id":"b2ce11bab0adf6d2804f497a5f11e796f72920d3"}],"nova/api/openstack/compute/schemas/v3/remote_consoles.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4319a2ee27300512f306d4d73f8afbf016d51fde","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                },"},{"line_number":25,"context_line":"            },"},{"line_number":26,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":27,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":28,"context_line":"        },"},{"line_number":29,"context_line":"    },"},{"line_number":30,"context_line":"    \u0027required\u0027: [\u0027get_vnc_console\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_cbb0e5ff","line":27,"updated":"2014-06-18 11:43:42.000000000","message":"This patch does not affect any unit tests, then it is better to add some unit tests to confirm these validation behaviors.\n\nSo how about adding some negative tests which passes undefined parameters on ./nova/tests/api/openstack/compute/plugins/v3/test_remote_consoles.py like the following?\n\n     def test_get_vnc_console_with_undefined_param(self):\n         self.stubs.Set(compute_api.API, \u0027get_vnc_console\u0027,\n                        fake_get_vnc_console_not_found)\n         body \u003d {\u0027get_vnc_console\u0027: {\u0027type\u0027: \u0027novnc\u0027, \u0027undefined\u0027: \u0027foo\u0027}}\n         req \u003d webob.Request.blank(\u0027/v3/servers/1/action\u0027)\n         req.method \u003d \"POST\"\n         req.body \u003d jsonutils.dumps(body)\n         req.headers[\"content-type\"] \u003d \"application/json\"\n         res \u003d req.get_response(self.app)\n         self.assertEqual(res.status_int, 400)","commit_id":"d9329fbe15a274e662f15454c32404e01bbfa199"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"0d9c54637b3c88dcf146f37495e0694539042967","unresolved":false,"context_lines":[{"line_number":24,"context_line":"                },"},{"line_number":25,"context_line":"            },"},{"line_number":26,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":27,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":28,"context_line":"        },"},{"line_number":29,"context_line":"    },"},{"line_number":30,"context_line":"    \u0027required\u0027: [\u0027get_vnc_console\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_7e78497e","line":27,"in_reply_to":"1ae5cdf2_cbb0e5ff","updated":"2014-06-19 04:29:56.000000000","message":"Done, thanks.","commit_id":"d9329fbe15a274e662f15454c32404e01bbfa199"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4319a2ee27300512f306d4d73f8afbf016d51fde","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                },"},{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":46,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":47,"context_line":"        },"},{"line_number":48,"context_line":"    },"},{"line_number":49,"context_line":"    \u0027required\u0027: [\u0027get_spice_console\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_0bce4d83","line":46,"updated":"2014-06-18 11:43:42.000000000","message":"ditto","commit_id":"d9329fbe15a274e662f15454c32404e01bbfa199"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"0d9c54637b3c88dcf146f37495e0694539042967","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                },"},{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":46,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":47,"context_line":"        },"},{"line_number":48,"context_line":"    },"},{"line_number":49,"context_line":"    \u0027required\u0027: [\u0027get_spice_console\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_9e7d1570","line":46,"in_reply_to":"1ae5cdf2_0bce4d83","updated":"2014-06-19 04:29:56.000000000","message":"Done.","commit_id":"d9329fbe15a274e662f15454c32404e01bbfa199"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4319a2ee27300512f306d4d73f8afbf016d51fde","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"            },"},{"line_number":64,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":65,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":66,"context_line":"        },"},{"line_number":67,"context_line":"    },"},{"line_number":68,"context_line":"    \u0027required\u0027: [\u0027get_rdp_console\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_2bcb0973","line":65,"updated":"2014-06-18 11:43:42.000000000","message":"ditto","commit_id":"d9329fbe15a274e662f15454c32404e01bbfa199"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"0d9c54637b3c88dcf146f37495e0694539042967","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                },"},{"line_number":63,"context_line":"            },"},{"line_number":64,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":65,"context_line":"            \u0027additionalProperties\u0027: False,"},{"line_number":66,"context_line":"        },"},{"line_number":67,"context_line":"    },"},{"line_number":68,"context_line":"    \u0027required\u0027: [\u0027get_rdp_console\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_be957189","line":65,"in_reply_to":"1ae5cdf2_2bcb0973","updated":"2014-06-19 04:29:56.000000000","message":"Done.","commit_id":"d9329fbe15a274e662f15454c32404e01bbfa199"}],"nova/api/openstack/compute/schemas/v3/remote_consoles_schema.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e8e60df9d85b8bc27a5446184b2003425d32f80f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027enum\u0027: [\u0027novnc\u0027, \u0027xvpvnc\u0027],"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"            },"},{"line_number":28,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F%2BAE%3D","line":28,"updated":"2013-12-26 05:56:35.000000000","message":"wrong indent. necessary more 4 spaces","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"d8fcaad88cbae7c9b11388566b14b478bc1c1183","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027enum\u0027: [\u0027novnc\u0027, \u0027xvpvnc\u0027],"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"            },"},{"line_number":28,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F93Q%3D","line":28,"in_reply_to":"AAAAT3%2F%2F%2BAE%3D","updated":"2013-12-26 06:11:15.000000000","message":"Done.","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e8e60df9d85b8bc27a5446184b2003425d32f80f","unresolved":false,"context_lines":[{"line_number":27,"context_line":"            },"},{"line_number":28,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F9%2F8%3D","line":30,"updated":"2013-12-26 05:56:35.000000000","message":"better to add\n\n \u0027required\u0027: [\u0027get_vnc_console\u0027],\n\nbecause of consistent to the other schemas.","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"d8fcaad88cbae7c9b11388566b14b478bc1c1183","unresolved":false,"context_lines":[{"line_number":27,"context_line":"            },"},{"line_number":28,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"}"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F93M%3D","line":30,"in_reply_to":"AAAAT3%2F%2F9%2F8%3D","updated":"2013-12-26 06:11:15.000000000","message":"Done.","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e8e60df9d85b8bc27a5446184b2003425d32f80f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    \u0027enum\u0027: [\u0027spice-html5\u0027],"},{"line_number":43,"context_line":"                },"},{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":46,"context_line":"        },"},{"line_number":47,"context_line":"    },"},{"line_number":48,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F%2BAA%3D","line":45,"updated":"2013-12-26 05:56:35.000000000","message":"ditto","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"d8fcaad88cbae7c9b11388566b14b478bc1c1183","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                    \u0027enum\u0027: [\u0027spice-html5\u0027],"},{"line_number":43,"context_line":"                },"},{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":46,"context_line":"        },"},{"line_number":47,"context_line":"    },"},{"line_number":48,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F93I%3D","line":45,"in_reply_to":"AAAAT3%2F%2F%2BAA%3D","updated":"2013-12-26 06:11:15.000000000","message":"Done.","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"e8e60df9d85b8bc27a5446184b2003425d32f80f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":46,"context_line":"        },"},{"line_number":47,"context_line":"    },"},{"line_number":48,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F9%2F0%3D","line":47,"updated":"2013-12-26 05:56:35.000000000","message":"ditto: better to add \u0027required\u0027","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"d8fcaad88cbae7c9b11388566b14b478bc1c1183","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            },"},{"line_number":45,"context_line":"        \u0027required\u0027: [\u0027type\u0027],"},{"line_number":46,"context_line":"        },"},{"line_number":47,"context_line":"    },"},{"line_number":48,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAT3%2F%2F93A%3D","line":47,"in_reply_to":"AAAAT3%2F%2F9%2F0%3D","updated":"2013-12-26 06:11:15.000000000","message":"Done.","commit_id":"b498f36b146c8ffa1df12ba19f8d6eb7acba74e4"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"533d8b9daf1b9fb427f1fa60996cbfd1c17ab0cf","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027enum\u0027: [\u0027novnc\u0027, \u0027xvpvnc\u0027],"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"            },"},{"line_number":28,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027required\u0027: [\u0027get_vnc_console\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F4x4%3D","line":28,"updated":"2013-12-28 00:02:16.000000000","message":"we should use \u0027\u0027additionalProperties\u0027: False,\u0027 for more strict check. Because we only need \u0027type\u0027 as the key.","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"cd8c0e13f3129eccb197fa25e5e4bf3c4da84f5d","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                    \u0027enum\u0027: [\u0027novnc\u0027, \u0027xvpvnc\u0027],"},{"line_number":26,"context_line":"                },"},{"line_number":27,"context_line":"            },"},{"line_number":28,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027required\u0027: [\u0027get_vnc_console\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F9lI%3D","line":28,"in_reply_to":"AAAAT3%2F%2F4x4%3D","updated":"2014-01-06 06:33:49.000000000","message":"Done.","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"533d8b9daf1b9fb427f1fa60996cbfd1c17ab0cf","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027required\u0027: [\u0027get_vnc_console\u0027],"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F4x8%3D","line":31,"updated":"2013-12-28 00:02:16.000000000","message":"we should use \u0027\u0027additionalProperties\u0027: False,\u0027 for more strict check.","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"cd8c0e13f3129eccb197fa25e5e4bf3c4da84f5d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":29,"context_line":"        },"},{"line_number":30,"context_line":"    },"},{"line_number":31,"context_line":"    \u0027required\u0027: [\u0027get_vnc_console\u0027],"},{"line_number":32,"context_line":"}"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F9lE%3D","line":31,"in_reply_to":"AAAAT3%2F%2F4x8%3D","updated":"2014-01-06 06:33:49.000000000","message":"Done.","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"533d8b9daf1b9fb427f1fa60996cbfd1c17ab0cf","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027enum\u0027: [\u0027spice-html5\u0027],"},{"line_number":44,"context_line":"                },"},{"line_number":45,"context_line":"            },"},{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":47,"context_line":"        },"},{"line_number":48,"context_line":"    },"},{"line_number":49,"context_line":"    \u0027required\u0027: [\u0027get_spice_console\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F4x0%3D","line":46,"updated":"2013-12-28 00:02:16.000000000","message":"ditto","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"cd8c0e13f3129eccb197fa25e5e4bf3c4da84f5d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    \u0027enum\u0027: [\u0027spice-html5\u0027],"},{"line_number":44,"context_line":"                },"},{"line_number":45,"context_line":"            },"},{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":47,"context_line":"        },"},{"line_number":48,"context_line":"    },"},{"line_number":49,"context_line":"    \u0027required\u0027: [\u0027get_spice_console\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F9k8%3D","line":46,"in_reply_to":"AAAAT3%2F%2F4x0%3D","updated":"2014-01-06 06:33:49.000000000","message":"Done.","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"533d8b9daf1b9fb427f1fa60996cbfd1c17ab0cf","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":47,"context_line":"        },"},{"line_number":48,"context_line":"    },"},{"line_number":49,"context_line":"    \u0027required\u0027: [\u0027get_spice_console\u0027],"},{"line_number":50,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAT3%2F%2F4xw%3D","line":49,"updated":"2013-12-28 00:02:16.000000000","message":"ditto","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"cd8c0e13f3129eccb197fa25e5e4bf3c4da84f5d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"            \u0027required\u0027: [\u0027type\u0027],"},{"line_number":47,"context_line":"        },"},{"line_number":48,"context_line":"    },"},{"line_number":49,"context_line":"    \u0027required\u0027: [\u0027get_spice_console\u0027],"},{"line_number":50,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2F9k0%3D","line":49,"in_reply_to":"AAAAT3%2F%2F4xw%3D","updated":"2014-01-06 06:33:49.000000000","message":"Done.","commit_id":"78aea4a311757c094e586f4425f54a7b8c2eb02d"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a5dca7470083408cb9cecce23837d7829b4bb643","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FhwY%3D","line":1,"updated":"2014-01-12 15:32:21.000000000","message":"you do not need this in the header","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"13aa198290bb679d156f6ff1a2762d22054cae92","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Faao%3D","line":1,"in_reply_to":"AAAAUH%2F%2FfYQ%3D","updated":"2014-01-14 00:48:05.000000000","message":"Done.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a331e82acb951747b8c16661413b418221045217","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfYQ%3D","line":1,"in_reply_to":"AAAAUH%2F%2FhwY%3D","updated":"2014-01-13 11:39:57.000000000","message":"Yes.\nWe should update this patch for other point, it is a good chance for applying this also.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a331e82acb951747b8c16661413b418221045217","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2FfYM%3D","line":3,"updated":"2014-01-13 11:39:57.000000000","message":"In the next patch, 2014 is better.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"13aa198290bb679d156f6ff1a2762d22054cae92","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 NEC Corporation.  All rights reserved."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2Faak%3D","line":3,"in_reply_to":"AAAAUH%2F%2FfYM%3D","updated":"2014-01-14 00:48:05.000000000","message":"Done.","commit_id":"b91b0d197b9adff643dfcfbed08dc635d78dcf1b"}],"nova/tests/api/openstack/compute/plugins/v3/test_remote_consoles.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4ae377bc26cc691898c73c10426fb7b1232642b1","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def test_get_vnc_console_with_undefined_param(self):"},{"line_number":213,"context_line":"        self.stubs.Set(compute_api.API, \u0027get_vnc_console\u0027,"},{"line_number":214,"context_line":"                       fake_get_vnc_console_not_found)"},{"line_number":215,"context_line":"        body \u003d {\u0027get_vnc_console\u0027: {\u0027type\u0027: \u0027novnc\u0027, \u0027undefined\u0027: \u0027foo\u0027}}"},{"line_number":216,"context_line":"        req \u003d webob.Request.blank(\u0027/v3/servers/1/action\u0027)"},{"line_number":217,"context_line":"        req.method \u003d \"POST\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_444d8071","line":214,"updated":"2014-06-19 05:54:15.000000000","message":"I think this stubs is not necessary because an exception happens before get_vnc_console call and it is not good to use stubs now.","commit_id":"21e97cb3e02f73bd4f768b32b746d76a6620a6be"},{"author":{"_account_id":6348,"name":"xu-haiwei","email":"hai-xu@xr.jp.nec.com","username":"xu-haiwei"},"change_message_id":"c26d8225979a24099c5f7cf8127f97322e3955e2","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def test_get_vnc_console_with_undefined_param(self):"},{"line_number":213,"context_line":"        self.stubs.Set(compute_api.API, \u0027get_vnc_console\u0027,"},{"line_number":214,"context_line":"                       fake_get_vnc_console_not_found)"},{"line_number":215,"context_line":"        body \u003d {\u0027get_vnc_console\u0027: {\u0027type\u0027: \u0027novnc\u0027, \u0027undefined\u0027: \u0027foo\u0027}}"},{"line_number":216,"context_line":"        req \u003d webob.Request.blank(\u0027/v3/servers/1/action\u0027)"},{"line_number":217,"context_line":"        req.method \u003d \"POST\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_0247e3a3","line":214,"in_reply_to":"1ae5cdf2_444d8071","updated":"2014-06-19 09:52:59.000000000","message":"Thanks. I confirmed that the body with undefined params can raise a 400 exception. So we don\u0027t need the stub i think.","commit_id":"21e97cb3e02f73bd4f768b32b746d76a6620a6be"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4ae377bc26cc691898c73c10426fb7b1232642b1","unresolved":false,"context_lines":[{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    def test_get_spice_console_with_undefined_param(self):"},{"line_number":322,"context_line":"        self.stubs.Set(compute_api.API, \u0027get_spice_console\u0027,"},{"line_number":323,"context_line":"                       fake_get_spice_console_not_found)"},{"line_number":324,"context_line":"        body \u003d {\u0027get_spice_console\u0027: {\u0027type\u0027: \u0027spice-html5\u0027, \u0027undefined\u0027: \u0027foo\u0027}}"},{"line_number":325,"context_line":"        req \u003d webob.Request.blank(\u0027/v3/servers/1/action\u0027)"},{"line_number":326,"context_line":"        req.method \u003d \"POST\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_64527c14","line":323,"updated":"2014-06-19 05:54:15.000000000","message":"ditto","commit_id":"21e97cb3e02f73bd4f768b32b746d76a6620a6be"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"4ae377bc26cc691898c73c10426fb7b1232642b1","unresolved":false,"context_lines":[{"line_number":416,"context_line":""},{"line_number":417,"context_line":"    def test_get_rdp_console_with_undefined_param(self):"},{"line_number":418,"context_line":"        self.stubs.Set(compute_api.API, \u0027get_rdp_console\u0027,"},{"line_number":419,"context_line":"                       fake_get_rdp_console_not_found)"},{"line_number":420,"context_line":"        body \u003d {\u0027get_rdp_console\u0027: {\u0027type\u0027: \u0027rdp-html5\u0027, \u0027undefined\u0027: \u0027foo\u0027}}"},{"line_number":421,"context_line":"        req \u003d webob.Request.blank(\u0027/v3/servers/1/action\u0027)"},{"line_number":422,"context_line":"        req.method \u003d \"POST\""}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_e43dacbc","line":419,"updated":"2014-06-19 05:54:15.000000000","message":"ditto","commit_id":"21e97cb3e02f73bd4f768b32b746d76a6620a6be"}]}
