)]}'
{"nova/conf/vnc.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"49097ce80f521f5c8b7bdca5b305a5276f2c3da3","unresolved":false,"context_lines":[{"line_number":206,"context_line":"* novncproxy_host"},{"line_number":207,"context_line":"* novncproxy_base_url"},{"line_number":208,"context_line":"\"\"\"),"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    cfg.ListOpt("},{"line_number":211,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":212,"context_line":"        default\u003d[\"none\"],"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_af8e8ecd","line":209,"updated":"2016-11-28 13:56:03.000000000","message":"Side note: I would have requested that the extra newline be removed, but this is actually consistent with the rest of the file.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"49097ce80f521f5c8b7bdca5b305a5276f2c3da3","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    cfg.ListOpt("},{"line_number":211,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":212,"context_line":"        default\u003d[\"none\"],"},{"line_number":213,"context_line":"        help\u003d\"\"\""},{"line_number":214,"context_line":"Configure the authentication schemes to use with the compute node"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_6f5d5646","line":212,"updated":"2016-11-28 13:56:03.000000000","message":"Does ListOpt offer a \u0027choices\u0027 field? If it does, perhaps it would be worth adding here (unless you expect out-of-tree authentication schemes)","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"04db51c3a3382e17ce41c44f76510b5c20c635f9","unresolved":false,"context_lines":[{"line_number":209,"context_line":""},{"line_number":210,"context_line":"    cfg.ListOpt("},{"line_number":211,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":212,"context_line":"        default\u003d[\"none\"],"},{"line_number":213,"context_line":"        help\u003d\"\"\""},{"line_number":214,"context_line":"Configure the authentication schemes to use with the compute node"},{"line_number":215,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_ca9658ef","line":212,"in_reply_to":"5a74a57a_6f5d5646","updated":"2016-11-28 14:05:33.000000000","message":"I don\u0027t see any ability todo that in oslo.config currently - I think it\u0027d require adding a new StrListOpt class and exposing ability to set \"choices\". While a nice enhancement, I don\u0027t see that as a reasonable thing to block on.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"5e85e72de23daeb096b8d8b028a1232369cd3bf9","unresolved":false,"context_lines":[{"line_number":216,"context_line":"This option controls what RFB authentication schemes are permitted"},{"line_number":217,"context_line":"for connections between the proxy and the compute host. If multiple"},{"line_number":218,"context_line":"schemes are enabled, the first matching scheme will be used, thus"},{"line_number":219,"context_line":"the strongest schemes should be listed first."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Possible values:"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_78e15d9a","line":219,"updated":"2016-11-29 16:42:38.000000000","message":"nit: Does it make sense to link to the manual entry you wrote for that? https://review.openstack.org/#/c/395729/10/doc/admin-guide/source/compute-remote-console-access.rst","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f37a0cf0fe475cdb78378cb0b9b959920740c3b5","unresolved":false,"context_lines":[{"line_number":216,"context_line":"This option controls what RFB authentication schemes are permitted"},{"line_number":217,"context_line":"for connections between the proxy and the compute host. If multiple"},{"line_number":218,"context_line":"schemes are enabled, the first matching scheme will be used, thus"},{"line_number":219,"context_line":"the strongest schemes should be listed first."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"Possible values:"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_6b104f02","line":219,"in_reply_to":"5a74a57a_78e15d9a","updated":"2017-01-04 15:27:16.000000000","message":"I see the benefit but I\u0027d be inclined to say no nonetheless - those links change too often, and I\u0027d rather folks Googled the term and found the documentation organically","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"6d47f9e30788837cb22f5d6726c8640c294f09f9","unresolved":false,"context_lines":[{"line_number":208,"context_line":"\"\"\"),"},{"line_number":209,"context_line":"    cfg.ListOpt("},{"line_number":210,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":211,"context_line":"        default\u003d[\u0027none\u0027],"},{"line_number":212,"context_line":"        help\u003d\"\"\""},{"line_number":213,"context_line":"The authentication schemes to use with the compute node."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"5f2577a7_0e20b99a","line":211,"updated":"2017-09-14 21:27:09.000000000","message":"Can we validate the items that can be in this list? I\u0027m a little concerned about fat fingering this.","commit_id":"2e68d1f511efbde31c753c47a9bd35b62d21980e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f6f826190d524ba6b60b8bad0bc81dee91c454ce","unresolved":false,"context_lines":[{"line_number":208,"context_line":"\"\"\"),"},{"line_number":209,"context_line":"    cfg.ListOpt("},{"line_number":210,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":211,"context_line":"        default\u003d[\u0027none\u0027],"},{"line_number":212,"context_line":"        help\u003d\"\"\""},{"line_number":213,"context_line":"The authentication schemes to use with the compute node."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff5d4b2f_36747d99","line":211,"in_reply_to":"5f2577a7_0e20b99a","updated":"2017-09-19 13:53:12.000000000","message":"Good idea. Done","commit_id":"2e68d1f511efbde31c753c47a9bd35b62d21980e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"eff79a5dbda075390733e0d939273f61074702a6","unresolved":false,"context_lines":[{"line_number":208,"context_line":"\"\"\"),"},{"line_number":209,"context_line":"    cfg.ListOpt("},{"line_number":210,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":211,"context_line":"        default\u003d[\u0027none\u0027],"},{"line_number":212,"context_line":"        help\u003d\"\"\""},{"line_number":213,"context_line":"The authentication schemes to use with the compute node."},{"line_number":214,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ff5d4b2f_d89aef6c","line":211,"in_reply_to":"ff5d4b2f_36747d99","updated":"2017-09-19 14:25:59.000000000","message":"Actually, we were already doing this in parts - see the following test in this patchset:\n\n  nova.tests.unit.console.rfb.test_auth.RFBAuthSchemeListTestCase.test_load_unknown\n\nHowever, it turns out we can do this natively with oslo_config, so I\u0027ve migrated to this.","commit_id":"2e68d1f511efbde31c753c47a9bd35b62d21980e"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"d7aad52f8a47b2613da34a786e658823f5fe4d40","unresolved":false,"context_lines":[{"line_number":231,"context_line":"Possible values:"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"* \"none\": allow connection without authentication"},{"line_number":234,"context_line":"\"\"\"),"},{"line_number":235,"context_line":"]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"ALL_OPTS.extend(CLI_OPTS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_dbe4a40f","line":234,"updated":"2017-11-28 18:28:14.000000000","message":"Actually, don\u0027t we need a reno for the new config option?","commit_id":"46b7baf408a49ee3444055b17d744520041c00d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14d7a0e0d61066679baf80d4839bf3acb072cbb8","unresolved":false,"context_lines":[{"line_number":231,"context_line":"Possible values:"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"* \"none\": allow connection without authentication"},{"line_number":234,"context_line":"\"\"\"),"},{"line_number":235,"context_line":"]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"ALL_OPTS.extend(CLI_OPTS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_85668429","line":234,"in_reply_to":"ff82abbf_3e4edb37","updated":"2017-11-30 10:54:41.000000000","message":"I moved part of the reno in here to resolve this issue and prevent the need to merge everything in one go (it just needs to be merged in one cycle)","commit_id":"46b7baf408a49ee3444055b17d744520041c00d7"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"cbbe502c8a4ad21c2794eedc6359e3b8211d8df4","unresolved":false,"context_lines":[{"line_number":231,"context_line":"Possible values:"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"* \"none\": allow connection without authentication"},{"line_number":234,"context_line":"\"\"\"),"},{"line_number":235,"context_line":"]"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"ALL_OPTS.extend(CLI_OPTS)"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_3e4edb37","line":234,"in_reply_to":"ff82abbf_dbe4a40f","updated":"2017-11-28 20:53:38.000000000","message":"Okay, I see that the reno is at the end of the series when the actual TLS encryption is possible, which makes sense to me. What we can do is hold the series with a -2 until all patches are +2 on everything and then let the series merge near the same time.","commit_id":"46b7baf408a49ee3444055b17d744520041c00d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    cfg.ListOpt("},{"line_number":218,"context_line":"        \u0027auth_schemes\u0027,"},{"line_number":219,"context_line":"        item_type\u003dtypes.String("},{"line_number":220,"context_line":"            choices\u003d[\u0027none\u0027]"},{"line_number":221,"context_line":"        ),"},{"line_number":222,"context_line":"        default\u003d[\u0027none\u0027],"},{"line_number":223,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_1f6a87b2","line":220,"updated":"2018-01-12 16:38:11.000000000","message":"Heh, OK I assume later patches will add to this...","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"}],"nova/console/rfb/auth.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_6600fa66","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":21},"updated":"2016-11-18 21:15:49.000000000","message":"New file - just 2016","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"043b38edd1886fde2319140bcc92ce6c19679e96","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_eb3f5185","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":21},"in_reply_to":"7a77a97e_6600fa66","updated":"2016-11-21 09:43:06.000000000","message":"Nope, this date is accurately reflects the code creation timeframe - nova is just that slow at merging code. Likewise for all the other places you repeat this comment.","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"5e85e72de23daeb096b8d8b028a1232369cd3bf9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def security_type(self):"},{"line_number":32,"context_line":"        \"\"\"Return the security type supported by this scheme"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        Returns the nova.console.rfb.constants.AUTH_TYPE_xx"},{"line_number":35,"context_line":"        constant representing the scheme implemented."},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_5b9e5b64","line":34,"range":{"start_line":34,"start_character":47,"end_line":34,"end_character":59},"updated":"2016-11-29 16:42:38.000000000","message":"If you\u0027re going to use my suggestion in the module \"constants\" to use a class derived from NovaBaseEnum, this docstring would need to be changed too.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"70b1725b7f10bc0252b61c25290b5507c7c57053","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def security_type(self):"},{"line_number":32,"context_line":"        \"\"\"Return the security type supported by this scheme"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        Returns the nova.console.rfb.constants.AUTH_TYPE_xx"},{"line_number":35,"context_line":"        constant representing the scheme implemented."},{"line_number":36,"context_line":"        \"\"\""},{"line_number":37,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_bd735ae6","line":34,"range":{"start_line":34,"start_character":47,"end_line":34,"end_character":59},"in_reply_to":"5a74a57a_5b9e5b64","updated":"2017-01-04 15:27:38.000000000","message":"Done","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"49097ce80f521f5c8b7bdca5b305a5276f2c3da3","unresolved":false,"context_lines":[{"line_number":52,"context_line":"class RFBAuthSchemeList(object):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    AUTH_SCHEME_MAP \u003d {"},{"line_number":55,"context_line":"        \"none\": \"nova.console.rfb.authnone.RFBAuthSchemeNone\","},{"line_number":56,"context_line":"    }"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_0ac850a7","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":62},"updated":"2016-11-28 13:56:03.000000000","message":"Could we include the actual class here, rather than a string that needs to be imported via importutils. For example:\n\n    from nova.console import rfb\n\n    ...\n\n    AUTH_SCHEME_MAP \u003d {\n        \u0027none\u0027: rfb.authnon.RFBAuthSchemeNone,\n    }","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e934b14e2bfd0db22172ba5bb0eb723b940935e","unresolved":false,"context_lines":[{"line_number":52,"context_line":"class RFBAuthSchemeList(object):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    AUTH_SCHEME_MAP \u003d {"},{"line_number":55,"context_line":"        \"none\": \"nova.console.rfb.authnone.RFBAuthSchemeNone\","},{"line_number":56,"context_line":"    }"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_3ced55b7","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":62},"in_reply_to":"5a74a57a_0a421068","updated":"2016-11-28 15:44:33.000000000","message":"True. We could split this file up and move the abstract class into a separate function that could be easily imported. That\u0027s a optional, future change though and I\u0027m fine with this as is.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"04db51c3a3382e17ce41c44f76510b5c20c635f9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"class RFBAuthSchemeList(object):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    AUTH_SCHEME_MAP \u003d {"},{"line_number":55,"context_line":"        \"none\": \"nova.console.rfb.authnone.RFBAuthSchemeNone\","},{"line_number":56,"context_line":"    }"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_0a421068","line":55,"range":{"start_line":55,"start_character":16,"end_line":55,"end_character":62},"in_reply_to":"5a74a57a_0ac850a7","updated":"2016-11-28 14:05:33.000000000","message":"That will create a circular import between this file and the auth impls - I chose to use the string here explicitly to avoid such a mutual dependency, as such deps cause pain.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"5e85e72de23daeb096b8d8b028a1232369cd3bf9","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        for name in CONF.vnc.auth_schemes:"},{"line_number":62,"context_line":"            if name not in self.AUTH_SCHEME_MAP:"},{"line_number":63,"context_line":"                raise exception.RFBAuthSchemeInvalid(name\u003dname)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            scheme \u003d importutils.import_object("},{"line_number":66,"context_line":"                self.AUTH_SCHEME_MAP[name])"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_d5395cf4","line":63,"updated":"2016-11-29 16:42:38.000000000","message":"Would it make sense to ignore wrong auth scheme names and log that with a warning instead of raising an exception? In the later change https://review.openstack.org/#/c/345399 , this behavior will prevent that the novncproxy service will start if a wrong configuration happened.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f37a0cf0fe475cdb78378cb0b9b959920740c3b5","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"        for name in CONF.vnc.auth_schemes:"},{"line_number":62,"context_line":"            if name not in self.AUTH_SCHEME_MAP:"},{"line_number":63,"context_line":"                raise exception.RFBAuthSchemeInvalid(name\u003dname)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            scheme \u003d importutils.import_object("},{"line_number":66,"context_line":"                self.AUTH_SCHEME_MAP[name])"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_4bd70b23","line":63,"in_reply_to":"5a74a57a_d5395cf4","updated":"2017-01-04 15:27:16.000000000","message":"You\u0027re referring to the comment on this file [1], right? If so, I would say that failing fast is the correct behavior, yes. We don\u0027t want folks inadvertently disabling authentication through a simple typo.\n\n[1] https://review.openstack.org/#/c/345399/11/nova/cmd/novncproxy.py","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"49097ce80f521f5c8b7bdca5b305a5276f2c3da3","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            if name not in self.AUTH_SCHEME_MAP:"},{"line_number":63,"context_line":"                raise exception.RFBAuthSchemeInvalid(name\u003dname)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"            scheme \u003d importutils.import_object("},{"line_number":66,"context_line":"                self.AUTH_SCHEME_MAP[name])"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"            self.schemes[scheme.security_type()] \u003d scheme"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_ea64f4b9","line":66,"range":{"start_line":65,"start_character":12,"end_line":66,"end_character":43},"updated":"2016-11-28 13:56:03.000000000","message":"This would become:\n\n    scheme \u003d self.AUTH_SCHEME_MAP[name]()\n\nI guess?","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"f32fb6dfacb66dfcd55c8039036f2f565c4e1103","unresolved":false,"context_lines":[{"line_number":23,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class AuthType(enum.Enum):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    INVALID \u003d 0"},{"line_number":29,"context_line":"    NONE \u003d 1"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_9e20479d","line":26,"range":{"start_line":26,"start_character":20,"end_line":26,"end_character":24},"updated":"2017-11-28 20:44:20.000000000","message":"The next patch changes this to IntEnum. Shouldn\u0027t we just do that here now instead?","commit_id":"46b7baf408a49ee3444055b17d744520041c00d7"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"14d7a0e0d61066679baf80d4839bf3acb072cbb8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class AuthType(enum.Enum):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    INVALID \u003d 0"},{"line_number":29,"context_line":"    NONE \u003d 1"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_65610012","line":26,"range":{"start_line":26,"start_character":20,"end_line":26,"end_character":24},"in_reply_to":"ff82abbf_9e20479d","updated":"2017-11-30 10:54:41.000000000","message":"Done","commit_id":"46b7baf408a49ee3444055b17d744520041c00d7"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @abc.abstractmethod"},{"line_number":55,"context_line":"    def security_handshake(self, compute_sock):"},{"line_number":56,"context_line":"        \"\"\"Perform security-type-specific functionality."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        This method is expected to return the socket-like"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_bfd59345","line":55,"range":{"start_line":55,"start_character":33,"end_line":55,"end_character":45},"updated":"2018-01-12 16:38:11.000000000","message":"A :param: entry for what this is would be nice.","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"0da1aad87146358ea05bca52473b80c345ef3637","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        pass"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @abc.abstractmethod"},{"line_number":55,"context_line":"    def security_handshake(self, compute_sock):"},{"line_number":56,"context_line":"        \"\"\"Perform security-type-specific functionality."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        This method is expected to return the socket-like"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_bf7cb3eb","line":55,"range":{"start_line":55,"start_character":33,"end_line":55,"end_character":45},"in_reply_to":"7f96bb07_bfd59345","updated":"2018-01-12 21:04:32.000000000","message":"Done","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"}],"nova/console/rfb/authnone.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_86fb5678","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":21},"updated":"2016-11-18 21:15:49.000000000","message":"New file - just 2016","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"}],"nova/console/rfb/auths.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"            self.schemes[scheme.security_type()] \u003d scheme"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def find_scheme(self, desired_types):"},{"line_number":38,"context_line":"        for security_type in desired_types:"},{"line_number":39,"context_line":"            if security_type in self.schemes:"},{"line_number":40,"context_line":"                return self.schemes[security_type]"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_dfbf3ff9","line":37,"range":{"start_line":37,"start_character":26,"end_line":37,"end_character":39},"updated":"2018-01-12 16:38:11.000000000","message":"nit: should have a docstring param on this, i.e. is it a list of ints or strings or what? I think it\u0027s a list of ints.","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                return self.schemes[security_type]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        raise exception.RFBAuthNoAvailableScheme("},{"line_number":43,"context_line":"            allowed_types\u003d\", \".join([str(s) for s in self.schemes.keys()]),"},{"line_number":44,"context_line":"            desired_types\u003d\", \".join([str(s) for s in desired_types]))"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_5f41ef0a","line":43,"range":{"start_line":43,"start_character":37,"end_line":43,"end_character":40},"updated":"2018-01-12 16:38:11.000000000","message":"Typically this should be six.text_type to be safe, unless we\u0027re sure these will just never be unicode. But it looks like it\u0027s just stringifying ints.","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2df739ce1e7c4f803a7185ad174edc7cafa2671","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                return self.schemes[security_type]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        raise exception.RFBAuthNoAvailableScheme("},{"line_number":43,"context_line":"            allowed_types\u003d\", \".join([str(s) for s in self.schemes.keys()]),"},{"line_number":44,"context_line":"            desired_types\u003d\", \".join([str(s) for s in desired_types]))"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_ee125d09","line":43,"range":{"start_line":43,"start_character":37,"end_line":43,"end_character":40},"in_reply_to":"7f96bb07_5f41ef0a","updated":"2018-01-15 17:05:11.000000000","message":"Yup, these are always ints. If it\u0027s not, that\u0027s a bug","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"}],"nova/console/rfb/constants.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"49097ce80f521f5c8b7bdca5b305a5276f2c3da3","unresolved":false,"context_lines":[{"line_number":18,"context_line":"AUTH_STATUS_FAIL \u003d b\"\\x00\""},{"line_number":19,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"AUTH_TYPE_INVALID \u003d 0"},{"line_number":22,"context_line":"AUTH_TYPE_NONE \u003d 1"},{"line_number":23,"context_line":"AUTH_TYPE_VNC \u003d 2"},{"line_number":24,"context_line":"AUTH_TYPE_RA2 \u003d 5"},{"line_number":25,"context_line":"AUTH_TYPE_RA2NE \u003d 6"},{"line_number":26,"context_line":"AUTH_TYPE_TIGHT \u003d 16"},{"line_number":27,"context_line":"AUTH_TYPE_ULTRA \u003d 17"},{"line_number":28,"context_line":"AUTH_TYPE_TLS \u003d 18  # Used by VINO"},{"line_number":29,"context_line":"AUTH_TYPE_VENCRYPT \u003d 19  # Used by VeNCrypt and QEMU"},{"line_number":30,"context_line":"AUTH_TYPE_SASL \u003d 20  # SASL type used by VINO and QEMU"},{"line_number":31,"context_line":"AUTH_TYPE_ARD \u003d 30  # Apple remote desktop (screen sharing)"},{"line_number":32,"context_line":"AUTH_TYPE_MSLOGON \u003d 0xfffffffa  # Used by UltraVNC"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_ea3234a6","line":32,"range":{"start_line":21,"start_character":0,"end_line":32,"end_character":50},"updated":"2016-11-28 13:56:03.000000000","message":"Rather than providing these by way of a constants file, would there be value in setting them as class attributes of the RFBAuthScheme implementations instead?","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"5e934b14e2bfd0db22172ba5bb0eb723b940935e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"AUTH_STATUS_FAIL \u003d b\"\\x00\""},{"line_number":19,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"AUTH_TYPE_INVALID \u003d 0"},{"line_number":22,"context_line":"AUTH_TYPE_NONE \u003d 1"},{"line_number":23,"context_line":"AUTH_TYPE_VNC \u003d 2"},{"line_number":24,"context_line":"AUTH_TYPE_RA2 \u003d 5"},{"line_number":25,"context_line":"AUTH_TYPE_RA2NE \u003d 6"},{"line_number":26,"context_line":"AUTH_TYPE_TIGHT \u003d 16"},{"line_number":27,"context_line":"AUTH_TYPE_ULTRA \u003d 17"},{"line_number":28,"context_line":"AUTH_TYPE_TLS \u003d 18  # Used by VINO"},{"line_number":29,"context_line":"AUTH_TYPE_VENCRYPT \u003d 19  # Used by VeNCrypt and QEMU"},{"line_number":30,"context_line":"AUTH_TYPE_SASL \u003d 20  # SASL type used by VINO and QEMU"},{"line_number":31,"context_line":"AUTH_TYPE_ARD \u003d 30  # Apple remote desktop (screen sharing)"},{"line_number":32,"context_line":"AUTH_TYPE_MSLOGON \u003d 0xfffffffa  # Used by UltraVNC"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_dcfc61ba","line":32,"range":{"start_line":21,"start_character":0,"end_line":32,"end_character":50},"in_reply_to":"5a74a57a_656737e9","updated":"2016-11-28 15:44:33.000000000","message":"OK, that sounds fair. Thanks for the explanation.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f37a0cf0fe475cdb78378cb0b9b959920740c3b5","unresolved":false,"context_lines":[{"line_number":18,"context_line":"AUTH_STATUS_FAIL \u003d b\"\\x00\""},{"line_number":19,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"AUTH_TYPE_INVALID \u003d 0"},{"line_number":22,"context_line":"AUTH_TYPE_NONE \u003d 1"},{"line_number":23,"context_line":"AUTH_TYPE_VNC \u003d 2"},{"line_number":24,"context_line":"AUTH_TYPE_RA2 \u003d 5"},{"line_number":25,"context_line":"AUTH_TYPE_RA2NE \u003d 6"},{"line_number":26,"context_line":"AUTH_TYPE_TIGHT \u003d 16"},{"line_number":27,"context_line":"AUTH_TYPE_ULTRA \u003d 17"},{"line_number":28,"context_line":"AUTH_TYPE_TLS \u003d 18  # Used by VINO"},{"line_number":29,"context_line":"AUTH_TYPE_VENCRYPT \u003d 19  # Used by VeNCrypt and QEMU"},{"line_number":30,"context_line":"AUTH_TYPE_SASL \u003d 20  # SASL type used by VINO and QEMU"},{"line_number":31,"context_line":"AUTH_TYPE_ARD \u003d 30  # Apple remote desktop (screen sharing)"},{"line_number":32,"context_line":"AUTH_TYPE_MSLOGON \u003d 0xfffffffa  # Used by UltraVNC"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_8b865311","line":32,"range":{"start_line":21,"start_character":0,"end_line":32,"end_character":50},"in_reply_to":"5a74a57a_b8077580","updated":"2017-01-04 15:27:16.000000000","message":"BaseNovaEnum subclasses appear to be used mostly for objects, which is different to what we\u0027re doing here. Instead, I\u0027ve gone and used the enum34 package which is already used elsewhere around nova","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"5e85e72de23daeb096b8d8b028a1232369cd3bf9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"AUTH_STATUS_FAIL \u003d b\"\\x00\""},{"line_number":19,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"AUTH_TYPE_INVALID \u003d 0"},{"line_number":22,"context_line":"AUTH_TYPE_NONE \u003d 1"},{"line_number":23,"context_line":"AUTH_TYPE_VNC \u003d 2"},{"line_number":24,"context_line":"AUTH_TYPE_RA2 \u003d 5"},{"line_number":25,"context_line":"AUTH_TYPE_RA2NE \u003d 6"},{"line_number":26,"context_line":"AUTH_TYPE_TIGHT \u003d 16"},{"line_number":27,"context_line":"AUTH_TYPE_ULTRA \u003d 17"},{"line_number":28,"context_line":"AUTH_TYPE_TLS \u003d 18  # Used by VINO"},{"line_number":29,"context_line":"AUTH_TYPE_VENCRYPT \u003d 19  # Used by VeNCrypt and QEMU"},{"line_number":30,"context_line":"AUTH_TYPE_SASL \u003d 20  # SASL type used by VINO and QEMU"},{"line_number":31,"context_line":"AUTH_TYPE_ARD \u003d 30  # Apple remote desktop (screen sharing)"},{"line_number":32,"context_line":"AUTH_TYPE_MSLOGON \u003d 0xfffffffa  # Used by UltraVNC"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_b8077580","line":32,"range":{"start_line":21,"start_character":0,"end_line":32,"end_character":50},"in_reply_to":"5a74a57a_dcfc61ba","updated":"2016-11-29 16:42:38.000000000","message":"I think it would make sense to use the \"BaseNovaEnum\" class like we did it for the architecture constants in https://github.com/openstack/nova/commit/61954082249add0854d5eef9d7d6e2e0109155dc#diff-f2518716e56d09dc1623b0184cdf0df9R98\n\nSo we could have:\n\n    class AuthStatus(BaseNovaEnum):\n        FAIL \u003d b\"\\x00\"\n        PASS \u003d b\"\\x01\"\n\n    class AuthType(BaseNovaEnum):\n        INVALID \u003d 0\n        # and so on\n\nAny kind of canonicalization or checks could then be part of these classes.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"04db51c3a3382e17ce41c44f76510b5c20c635f9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"AUTH_STATUS_FAIL \u003d b\"\\x00\""},{"line_number":19,"context_line":"AUTH_STATUS_PASS \u003d b\"\\x01\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"AUTH_TYPE_INVALID \u003d 0"},{"line_number":22,"context_line":"AUTH_TYPE_NONE \u003d 1"},{"line_number":23,"context_line":"AUTH_TYPE_VNC \u003d 2"},{"line_number":24,"context_line":"AUTH_TYPE_RA2 \u003d 5"},{"line_number":25,"context_line":"AUTH_TYPE_RA2NE \u003d 6"},{"line_number":26,"context_line":"AUTH_TYPE_TIGHT \u003d 16"},{"line_number":27,"context_line":"AUTH_TYPE_ULTRA \u003d 17"},{"line_number":28,"context_line":"AUTH_TYPE_TLS \u003d 18  # Used by VINO"},{"line_number":29,"context_line":"AUTH_TYPE_VENCRYPT \u003d 19  # Used by VeNCrypt and QEMU"},{"line_number":30,"context_line":"AUTH_TYPE_SASL \u003d 20  # SASL type used by VINO and QEMU"},{"line_number":31,"context_line":"AUTH_TYPE_ARD \u003d 30  # Apple remote desktop (screen sharing)"},{"line_number":32,"context_line":"AUTH_TYPE_MSLOGON \u003d 0xfffffffa  # Used by UltraVNC"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_656737e9","line":32,"range":{"start_line":21,"start_character":0,"end_line":32,"end_character":50},"in_reply_to":"5a74a57a_ea3234a6","updated":"2016-11-28 14:05:33.000000000","message":"There\u0027s a bunch of constants related to the RFB protocol and I feel it is better to have them all in one place, rather than scattered across the code. NB, some of the auth schemes can be stackable, so there\u0027s not a guaranteed 1-1 mapping between constants \u0026 file impls in general.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"}],"nova/tests/unit/console/rfb/test_auth.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        schemelist \u003d auth.RFBAuthSchemeList()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        security_types \u003d sorted(schemelist.schemes.keys())"},{"line_number":35,"context_line":"        self.assertEqual(security_types,"},{"line_number":36,"context_line":"                         [constants.AUTH_TYPE_NONE])"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def test_load_unknown(self):"},{"line_number":39,"context_line":"        self.flags(auth_schemes\u003d[\"none\", \"wibble\"], group\u003d\"vnc\")"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_0615869a","line":36,"range":{"start_line":35,"start_character":0,"end_line":36,"end_character":52},"updated":"2016-11-18 21:15:49.000000000","message":"nit: can be one line","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":48,"context_line":"            [constants.AUTH_TYPE_TIGHT,"},{"line_number":49,"context_line":"             constants.AUTH_TYPE_NONE])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"        self.assertIsInstance(scheme,"},{"line_number":52,"context_line":"                              authnone.RFBAuthSchemeNone)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def test_find_scheme_fail(self):"},{"line_number":55,"context_line":"        schemelist \u003d auth.RFBAuthSchemeList()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_c648eece","line":52,"range":{"start_line":51,"start_character":1,"end_line":52,"end_character":57},"updated":"2016-11-18 21:15:49.000000000","message":"nit: this can be one line","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            [constants.AUTH_TYPE_TIGHT,"},{"line_number":69,"context_line":"             constants.AUTH_TYPE_NONE])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.assertEqual(scheme, tight)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_4634de48","line":71,"range":{"start_line":71,"start_character":25,"end_line":71,"end_character":38},"updated":"2016-11-18 21:15:49.000000000","message":"(tight, scheme)","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"5e85e72de23daeb096b8d8b028a1232369cd3bf9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def test_load_ok(self):"},{"line_number":32,"context_line":"        schemelist \u003d auth.RFBAuthSchemeList()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        security_types \u003d sorted(schemelist.schemes.keys())"},{"line_number":35,"context_line":"        self.assertEqual(security_types, [constants.AUTH_TYPE_NONE])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def test_load_unknown(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a74a57a_9e72a1af","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":58},"updated":"2016-11-29 16:42:38.000000000","message":"Maybe having a method \"get_supported_security_types()\" method in the RFBAuthShemeList class would make sense? Would be nice to *not* know the implementation detail that \"schemes\" is a dict which uses the security_types as keys.","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"f37a0cf0fe475cdb78378cb0b9b959920740c3b5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def test_load_ok(self):"},{"line_number":32,"context_line":"        schemelist \u003d auth.RFBAuthSchemeList()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        security_types \u003d sorted(schemelist.schemes.keys())"},{"line_number":35,"context_line":"        self.assertEqual(security_types, [constants.AUTH_TYPE_NONE])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def test_load_unknown(self):"}],"source_content_type":"text/x-python","patch_set":9,"id":"ba5201f7_bdd7dabd","line":34,"range":{"start_line":34,"start_character":25,"end_line":34,"end_character":58},"in_reply_to":"5a74a57a_9e72a1af","updated":"2017-01-04 15:27:16.000000000","message":"Right, but then we\u0027d need a test for that function :) I don\u0027t see this field being accessed outside of tests and the class itself, so I think we don\u0027t need to do this (yet!)","commit_id":"0ac55f6a8b260ac926c5c1b28991dc140eaa3b3d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(RFBAuthSchemeListTestCase, self).setUp()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        self.flags(auth_schemes\u003d[\"none\"], group\u003d\"vnc\")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_load_ok(self):"},{"line_number":32,"context_line":"        schemelist \u003d auths.RFBAuthSchemeList()"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_df541fcd","line":29,"updated":"2018-01-12 16:38:11.000000000","message":"not sure why you need to set this as it\u0027s already the default","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2df739ce1e7c4f803a7185ad174edc7cafa2671","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(RFBAuthSchemeListTestCase, self).setUp()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"        self.flags(auth_schemes\u003d[\"none\"], group\u003d\"vnc\")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def test_load_ok(self):"},{"line_number":32,"context_line":"        schemelist \u003d auths.RFBAuthSchemeList()"}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_8ef959c9","line":29,"in_reply_to":"7f96bb07_df541fcd","updated":"2018-01-15 17:05:11.000000000","message":"But it might not be in the future. This is future-proofing.","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        schemelist \u003d auths.RFBAuthSchemeList()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        security_types \u003d sorted(schemelist.schemes.keys())"},{"line_number":35,"context_line":"        self.assertEqual(security_types, [auth.AuthType.NONE])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def test_load_unknown(self):"},{"line_number":38,"context_line":"        \"\"\"Ensure invalid auth schemes are not supported."}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_bf6353b1","line":35,"updated":"2018-01-12 16:38:11.000000000","message":"These args should be reversed:\n\nassertEqual(expected, observed)\n\nIt only matters if the test fails because you\u0027ll have confusing MismatchError output.","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2df739ce1e7c4f803a7185ad174edc7cafa2671","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        schemelist \u003d auths.RFBAuthSchemeList()"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        security_types \u003d sorted(schemelist.schemes.keys())"},{"line_number":35,"context_line":"        self.assertEqual(security_types, [auth.AuthType.NONE])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def test_load_unknown(self):"},{"line_number":38,"context_line":"        \"\"\"Ensure invalid auth schemes are not supported."}],"source_content_type":"text/x-python","patch_set":35,"id":"7f96bb07_ee2b3d2d","line":35,"in_reply_to":"7f96bb07_bf6353b1","updated":"2018-01-15 17:05:11.000000000","message":"Done","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"}],"nova/tests/unit/console/rfb/test_authnone.py":[{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014-2016 Red Hat, Inc"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_2618c2d2","line":1,"range":{"start_line":1,"start_character":16,"end_line":1,"end_character":20},"updated":"2016-11-18 21:15:49.000000000","message":"New file - just 2016","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"4c87c853e508672257736fa6d6f5f4dd5ae9d0f3","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    def test_types(self):"},{"line_number":34,"context_line":"        scheme \u003d authnone.RFBAuthSchemeNone()"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        self.assertEqual(constants.AUTH_TYPE_NONE,"},{"line_number":37,"context_line":"                         scheme.security_type())"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a77a97e_a624d20c","line":37,"range":{"start_line":36,"start_character":0,"end_line":37,"end_character":48},"updated":"2016-11-18 21:15:49.000000000","message":"nit: can be one line","commit_id":"9b7e0af020ffb75b46899ff11dd49024e156e6c0"}],"releasenotes/notes/websocket-proxy-to-host-security-c3eca0647b0cbc02.yaml":[{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"e3050bf6ea0b80c8d95ba31702f9ac18caa9adec","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a number of new configuration option to the ``[vnc]`` group, which"},{"line_number":5,"context_line":"    together allow for the configuration of authentication used between the"},{"line_number":6,"context_line":"    *nova-novncproxy* server and the compute node VNC server."},{"line_number":7,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":27,"id":"df87a7cf_3b8a8dbe","line":4,"range":{"start_line":4,"start_character":40,"end_line":4,"end_character":46},"updated":"2017-12-08 16:11:46.000000000","message":"options","commit_id":"b518f0e0109d78d16c1ad4bb980f94ae74cd3143"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0647726de6601744dd9b77af2a987c7977184b67","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    together allow for the configuration of authentication used between the"},{"line_number":6,"context_line":"    *nova-novncproxy* server and the compute node VNC server."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    - ``auth_schemes``"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"7f96bb07_7f5dcbe7","line":8,"updated":"2018-01-12 16:38:11.000000000","message":"I assume you\u0027ll be building on this release note since \"a number\" generally means \u003e1.","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"c2df739ce1e7c4f803a7185ad174edc7cafa2671","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    together allow for the configuration of authentication used between the"},{"line_number":6,"context_line":"    *nova-novncproxy* server and the compute node VNC server."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"    - ``auth_schemes``"}],"source_content_type":"text/x-yaml","patch_set":35,"id":"7f96bb07_4e1cb111","line":8,"in_reply_to":"7f96bb07_7f5dcbe7","updated":"2018-01-15 17:05:11.000000000","message":"I do :)","commit_id":"3c7770f1af10728fbaecffce526d6ffbb3e112a9"}]}
