)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"084d1d200a584dd03012b1905a679452e78f4570","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change allows user domains and tenant/project domains to"},{"line_number":10,"context_line":"be specified through CLI.  This is necessary because keystone"},{"line_number":11,"context_line":"v2 API is deprecatedas of Icehouse."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iece9f41320a8770176c7eeb5acd86be4d80cc58f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa98f980_72b2a2e6","line":11,"updated":"2014-09-18 22:38:10.000000000","message":"\"deprecated as of\"","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"10439ad2b58d763d0bfc381dffcd8b2b4393c6c6","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This change allows user domains and tenant/project domains to"},{"line_number":10,"context_line":"be specified through CLI.  This is necessary because keystone"},{"line_number":11,"context_line":"v2 API is deprecatedas of Icehouse."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Iece9f41320a8770176c7eeb5acd86be4d80cc58f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"fa98f980_b72ea38a","line":11,"in_reply_to":"fa98f980_72b2a2e6","updated":"2014-09-19 18:17:08.000000000","message":"Will fix the typo in the next patch.","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"fbe5ce7aeeea41fb3c674daaf670d14afe9a10b0","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The main goal was to integration with keystoneclient so that"},{"line_number":14,"context_line":"common functionality such as authentication, (http) session"},{"line_number":15,"context_line":"management, and service catalog abstraction are provided"},{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"baa201ad_d4b570ed","line":15,"updated":"2014-10-17 18:05:52.000000000","message":"I am still unclear about this. It sounds like you are describing the patch linked above.","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"9463dba453393d51078ce17ae84f06232ad9e8cc","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The main goal was to integration with keystoneclient so that"},{"line_number":14,"context_line":"common functionality such as authentication, (http) session"},{"line_number":15,"context_line":"management, and service catalog abstraction are provided"},{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"9aa7fdbe_8bbb890d","line":15,"in_reply_to":"baa201ad_28ac9fec","updated":"2014-10-20 15:52:11.000000000","message":"It is describing this patch.  Are you saying that there are changes that are not touch upon in the commit message?  Can you be more specific?","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"628263ddc5a907d6e9c469a7c76ad8ba4b613c1f","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The main goal was to integration with keystoneclient so that"},{"line_number":14,"context_line":"common functionality such as authentication, (http) session"},{"line_number":15,"context_line":"management, and service catalog abstraction are provided"},{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"baa201ad_d7e812b5","line":15,"in_reply_to":"baa201ad_d4b570ed","updated":"2014-10-17 18:54:45.000000000","message":"I can briefly describe keystone version independent aspect of things and how wonderful it is for novaclient not having to parse the service catalog for keystone version. Would that help?","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"c5be8acf0256e4c8f3a1e4c47e7418d00467d37c","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The main goal was to integration with keystoneclient so that"},{"line_number":14,"context_line":"common functionality such as authentication, (http) session"},{"line_number":15,"context_line":"management, and service catalog abstraction are provided"},{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"baa201ad_28ac9fec","line":15,"in_reply_to":"baa201ad_d7e812b5","updated":"2014-10-17 20:49:20.000000000","message":"That wouldn\u0027t hurt but won\u0027t help either. My question is what are you describing, the previous patch  ( https://review.openstack.org/#/c/85920) or this patch?\n\nPlease see https://wiki.openstack.org/wiki/GitCommitMessages#Structural_split_of_changes\n\nThis patch is still several logical changes.\n\n\nAnd see the following for what is expected in a commit message: https://wiki.openstack.org/wiki/GitCommitMessages#Information_in_commit_messages","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"fbe5ce7aeeea41fb3c674daaf670d14afe9a10b0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"However, there\u0027s small gap between keystoneclient session and"},{"line_number":20,"context_line":"Nova HTTP session, which is to keep track of timing for each API"},{"line_number":21,"context_line":"call. This issue will be addressed by a dependent patch."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"baa201ad_34c6bc68","line":19,"updated":"2014-10-17 18:05:52.000000000","message":"And then describing the limitations of this patch. Is the gap in this patch or in https://review.openstack.org/#/c/85920 ? If https://review.openstack.org/#/c/85920 then the ordering of these patches should be reversed.\n\nBut not what this patch does.","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"628263ddc5a907d6e9c469a7c76ad8ba4b613c1f","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"However, there\u0027s small gap between keystoneclient session and"},{"line_number":20,"context_line":"Nova HTTP session, which is to keep track of timing for each API"},{"line_number":21,"context_line":"call. This issue will be addressed by a dependent patch."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"baa201ad_97a68abf","line":19,"in_reply_to":"baa201ad_34c6bc68","updated":"2014-10-17 18:54:45.000000000","message":"The answer is both.  --timings (in a separate patch) measures the execution time of SessionClient request call (https://review.openstack.org/#/c/85920) and keystone auth call (this patch).  The ordering of the patches is fine.","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"c5be8acf0256e4c8f3a1e4c47e7418d00467d37c","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"However, there\u0027s small gap between keystoneclient session and"},{"line_number":20,"context_line":"Nova HTTP session, which is to keep track of timing for each API"},{"line_number":21,"context_line":"call. This issue will be addressed by a dependent patch."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"baa201ad_c87a3376","line":19,"in_reply_to":"baa201ad_97a68abf","updated":"2014-10-17 20:49:20.000000000","message":"We should not be introducing a bug in this patch and fixing it in the next patch. We should squash the bug before it lands.","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"9463dba453393d51078ce17ae84f06232ad9e8cc","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from a single source. This gives us consistency, better"},{"line_number":17,"context_line":"support, and therefore better user experience."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"However, there\u0027s small gap between keystoneclient session and"},{"line_number":20,"context_line":"Nova HTTP session, which is to keep track of timing for each API"},{"line_number":21,"context_line":"call. This issue will be addressed by a dependent patch."},{"line_number":22,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":20,"id":"9aa7fdbe_2b41bd39","line":19,"in_reply_to":"baa201ad_c87a3376","updated":"2014-10-20 15:52:11.000000000","message":"--timings has dependency on this patch in order to take a time measurement of keystone auth call. \n\nhttps://review.openstack.org/#/c/128786/","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"}],"novaclient/client.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e2e0d3a93987503d9dd9fa774d6f57e250ecf205","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.service_type \u003d service_type"},{"line_number":144,"context_line":"        self.region_name \u003d region_name"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        self.times \u003d []  # [(\"item\", starttime, endtime), ...]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":149,"context_line":"        kwargs.setdefault(\u0027user_agent\u0027, \u0027python-novaclient\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_1cf30e0b","line":146,"updated":"2014-07-17 18:19:53.000000000","message":"While I like the fact that we\u0027re restoring the timings functionality, it feels like it isn\u0027t really related to this change.  I\u0027d like you to consider pulling this out into a separate patch so it can be discussed on its own…","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8bc1d55ffc6d2f315ec11b255dc72650aab193bb","unresolved":false,"context_lines":[{"line_number":143,"context_line":"        self.service_type \u003d service_type"},{"line_number":144,"context_line":"        self.region_name \u003d region_name"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        self.times \u003d []  # [(\"item\", starttime, endtime), ...]"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":149,"context_line":"        kwargs.setdefault(\u0027user_agent\u0027, \u0027python-novaclient\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_e35e92e8","line":146,"in_reply_to":"baada198_1cf30e0b","updated":"2014-07-18 16:28:10.000000000","message":"Sure.  I will back out the changes.  My intend was to provide similar HTTPClient timings functionality since tempest calls novaclient with --timing.","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"853e4e68c7d73cb960b924aebe6143eb56cdf941","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class SessionClient(adapter.LegacyJsonAdapter):"},{"line_number":139,"context_line":"    times \u003d []"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":142,"context_line":"        # NOTE(jamielennox): The standard call raises errors from"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_a895a0e5","line":139,"updated":"2014-10-31 15:31:32.000000000","message":"why do you put this on the class? why wouldn\u0027t it be in __init__?\n\nAlso regarding one of the comments - you won\u0027t get the timing of Auth requests to keystone this way. \n\nA fix to this is to subclass the session in pretty much the exact same way as this. \n\neg https://review.openstack.org/#/c/131804/3/openstackclient/api/auth.py","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d5a1d8b5c440d03ee46158f350950e8df4d80dd5","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class SessionClient(adapter.LegacyJsonAdapter):"},{"line_number":139,"context_line":"    times \u003d []"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":142,"context_line":"        # NOTE(jamielennox): The standard call raises errors from"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_e348a65d","line":139,"in_reply_to":"7a8c0949_a895a0e5","updated":"2014-10-31 22:25:56.000000000","message":"Excellent question.  It is a matter of static element vs object element.  The intend is not to make it static. Will move \"times\" to __init__ in the next patch.\n\nTiming measurement for Auth is done in shell.py.","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"f69c3ccb7f8ea1ed0f0ac7a808d44c8f1d87fdb7","unresolved":false,"context_lines":[{"line_number":136,"context_line":""},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"class SessionClient(adapter.LegacyJsonAdapter):"},{"line_number":139,"context_line":"    times \u003d []"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    def request(self, url, method, **kwargs):"},{"line_number":142,"context_line":"        # NOTE(jamielennox): The standard call raises errors from"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_9762a3ab","line":139,"in_reply_to":"7a8c0949_e348a65d","updated":"2014-11-04 16:29:34.000000000","message":"Done","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5828ba9ba35c866fabc21f871f87571282ce8ffa","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def reset_timings(self):"},{"line_number":167,"context_line":"        self.times \u003d []"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"def _original_only(f):"},{"line_number":171,"context_line":"    \"\"\"Indicates and enforces that this function can only be used if we are"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_e8c30155","line":168,"updated":"2014-11-05 14:20:03.000000000","message":"Being on the adapter rather than the session means you will be able to time the client requests but you won\u0027t time auth requests because they work on session directly.\n\nI\u0027m not sure if that\u0027s intentional. \n\nCheck for example what i did here: https://review.openstack.org/#/c/131804/6/openstackclient/api/auth.py","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":165,"context_line":""},{"line_number":166,"context_line":"    def reset_timings(self):"},{"line_number":167,"context_line":"        self.times \u003d []"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"def _original_only(f):"},{"line_number":171,"context_line":"    \"\"\"Indicates and enforces that this function can only be used if we are"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_05e10b9a","line":168,"in_reply_to":"7a8c0949_e8c30155","updated":"2014-11-05 18:00:22.000000000","message":"See novaclient/shell.py line 663 to 680 in this patch for auth requests time measurement.  This is the best solution currently until keystoneclient implements (I can help) something similar to https://review.openstack.org/#/c/131804/6/openstackclient/api/auth.py.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"}],"novaclient/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":53,"context_line":"from novaclient.v1_1 import shell as shell_v1_1"},{"line_number":54,"context_line":"from novaclient.v3 import shell as shell_v3"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"from keystoneclient.auth.identity import v2 as v2_auth"},{"line_number":57,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":58,"context_line":"from keystoneclient.auth import token_endpoint"},{"line_number":59,"context_line":"from keystoneclient import discover"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_3713840e","line":56,"updated":"2014-07-10 22:27:17.000000000","message":"These are third-party imports and need to be with the other third party imports (e.g., \"import six\" and friends).","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":53,"context_line":"from novaclient.v1_1 import shell as shell_v1_1"},{"line_number":54,"context_line":"from novaclient.v3 import shell as shell_v3"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"from keystoneclient.auth.identity import v2 as v2_auth"},{"line_number":57,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":58,"context_line":"from keystoneclient.auth import token_endpoint"},{"line_number":59,"context_line":"from keystoneclient import discover"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_aeaec896","line":56,"in_reply_to":"baada198_3713840e","updated":"2014-07-15 22:33:54.000000000","message":"Will fix in the next patch.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":245,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":246,"context_line":"        # refactor this code once this functionality is avaible in"},{"line_number":247,"context_line":"        # python-keystoneclient."},{"line_number":248,"context_line":"        parser.add_argument(\u0027-k\u0027, \u0027--insecure\u0027,"},{"line_number":249,"context_line":"                            default\u003dFalse,"},{"line_number":250,"context_line":"                            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d71248b3","line":247,"updated":"2014-07-10 22:27:17.000000000","message":"Agreed, ultimately, these need to come from python-keystoneclient…","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                            default\u003dFalse,"},{"line_number":250,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":251,"context_line":"                            help\u003d\u0027Explicitly allow novaclient to perform \u0027"},{"line_number":252,"context_line":"                            \u0027\\\"insecure SSL\\\" (https) requests. The server\\\u0027s \u0027"},{"line_number":253,"context_line":"                            \u0027certificate will not be verified against any \u0027"},{"line_number":254,"context_line":"                            \u0027certificate authorities. This option should \u0027"},{"line_number":255,"context_line":"                            \u0027be used with caution.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b7ecf4f4","line":252,"updated":"2014-07-10 22:27:17.000000000","message":"So, you\u0027re already escaping double-quotes; why not use double quotes around the whole string so you don\u0027t have to escape the single quote?  Or drop the escapes around the double quotes for \"insecure SSL\".  As is, this just looks a little odd…\n\nAlso, we CANNOT drop NOVACLIENT_INSECURE at this point.  We can do some kind of deprecation procedure, like checking OS_INSECURE, then looking for NOVACLIENT_INSECURE, but we need to be able to specify this in the environment, if for no other reason than backwards compatibility…","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"ef645f48877111d076fc2a548e0960ea66eaca78","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                            default\u003dFalse,"},{"line_number":250,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":251,"context_line":"                            help\u003d\u0027Explicitly allow novaclient to perform \u0027"},{"line_number":252,"context_line":"                            \u0027\\\"insecure SSL\\\" (https) requests. The server\\\u0027s \u0027"},{"line_number":253,"context_line":"                            \u0027certificate will not be verified against any \u0027"},{"line_number":254,"context_line":"                            \u0027certificate authorities. This option should \u0027"},{"line_number":255,"context_line":"                            \u0027be used with caution.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_791b9180","line":252,"in_reply_to":"baada198_0ed97422","updated":"2014-07-16 05:21:40.000000000","message":"Since nova client uses nova specific env var NOVACLIENT_INSECURE, will keep this argument out of this function.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":249,"context_line":"                            default\u003dFalse,"},{"line_number":250,"context_line":"                            action\u003d\u0027store_true\u0027,"},{"line_number":251,"context_line":"                            help\u003d\u0027Explicitly allow novaclient to perform \u0027"},{"line_number":252,"context_line":"                            \u0027\\\"insecure SSL\\\" (https) requests. The server\\\u0027s \u0027"},{"line_number":253,"context_line":"                            \u0027certificate will not be verified against any \u0027"},{"line_number":254,"context_line":"                            \u0027certificate authorities. This option should \u0027"},{"line_number":255,"context_line":"                            \u0027be used with caution.\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_0ed97422","line":252,"in_reply_to":"baada198_b7ecf4f4","updated":"2014-07-15 22:33:54.000000000","message":"Will bring back NOVACLIENT_INSECURE in the next patch.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        # for backward compatibility only"},{"line_number":263,"context_line":"        parser.add_argument(\u0027--cert-file\u0027,"},{"line_number":264,"context_line":"                            dest\u003d\u0027os_cert\u0027,"},{"line_number":265,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cert.\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        parser.add_argument(\u0027--os-key\u0027,"},{"line_number":268,"context_line":"                            help\u003d\u0027Path of client key to use in SSL \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_379d445a","line":265,"updated":"2014-07-10 22:27:17.000000000","message":"backwards compatibility with what?  If novaclient never took --cert-file, then I don\u0027t see why we should include this.  Also, I prefer to see \"help\u003dargparse.SUPPRESS\" for deprecated arguments; there\u0027s no reason to include them in the documentation, as that will just confuse people.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        # for backward compatibility only"},{"line_number":263,"context_line":"        parser.add_argument(\u0027--cert-file\u0027,"},{"line_number":264,"context_line":"                            dest\u003d\u0027os_cert\u0027,"},{"line_number":265,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cert.\u0027)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        parser.add_argument(\u0027--os-key\u0027,"},{"line_number":268,"context_line":"                            help\u003d\u0027Path of client key to use in SSL \u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_8e33c461","line":265,"in_reply_to":"baada198_379d445a","updated":"2014-07-15 22:33:54.000000000","message":"Will remove for the next patch.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":295,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"},{"line_number":298,"context_line":"                            metavar\u003d\u0027\u003cauth-user-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_57cab84f","line":295,"updated":"2014-07-10 22:27:17.000000000","message":"How long have these been deprecated?  Has it been long enough that we can just drop them?  (That may be a discussion we have to have on the dev list…)","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":292,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":295,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"},{"line_number":298,"context_line":"                            metavar\u003d\u0027\u003cauth-user-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4eec4c93","line":295,"in_reply_to":"baada198_57cab84f","updated":"2014-07-15 22:33:54.000000000","message":"Must been awhile :)  It is worth have a discussion on the topic.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        # discover the API versions the server is supporting base on the"},{"line_number":633,"context_line":"        # given URL"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        #dhu"},{"line_number":636,"context_line":"        v2_auth_url \u003d None"},{"line_number":637,"context_line":"        v3_auth_url \u003d None"},{"line_number":638,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_17e92080","line":635,"updated":"2014-07-10 22:27:17.000000000","message":"\"#dhu\" what?","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":632,"context_line":"        # discover the API versions the server is supporting base on the"},{"line_number":633,"context_line":"        # given URL"},{"line_number":634,"context_line":""},{"line_number":635,"context_line":"        #dhu"},{"line_number":636,"context_line":"        v2_auth_url \u003d None"},{"line_number":637,"context_line":"        v3_auth_url \u003d None"},{"line_number":638,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_2e53983a","line":635,"in_reply_to":"baada198_17e92080","updated":"2014-07-15 22:33:54.000000000","message":"Will remove.  Can\u0027t believe I left it in here.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":641,"context_line":"            v3_auth_url \u003d ks_discover.url_for(\u00273.0\u0027)"},{"line_number":642,"context_line":"        except ks_exc.ClientException:"},{"line_number":643,"context_line":"            # Identity service may not support discover API version."},{"line_number":644,"context_line":"            # Lets trying to figure out the API version from the original URL."},{"line_number":645,"context_line":"            url_parts \u003d urlparse.urlparse(auth_url)"},{"line_number":646,"context_line":"            (scheme, netloc, path, params, query, fragment) \u003d url_parts"},{"line_number":647,"context_line":"            path \u003d path.lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_b7f79458","line":644,"updated":"2014-07-10 22:27:17.000000000","message":"s/Lets trying/Let\u0027s try/ (femtonit)","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":641,"context_line":"            v3_auth_url \u003d ks_discover.url_for(\u00273.0\u0027)"},{"line_number":642,"context_line":"        except ks_exc.ClientException:"},{"line_number":643,"context_line":"            # Identity service may not support discover API version."},{"line_number":644,"context_line":"            # Lets trying to figure out the API version from the original URL."},{"line_number":645,"context_line":"            url_parts \u003d urlparse.urlparse(auth_url)"},{"line_number":646,"context_line":"            (scheme, netloc, path, params, query, fragment) \u003d url_parts"},{"line_number":647,"context_line":"            path \u003d path.lower()"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4e160c5a","line":644,"in_reply_to":"baada198_b7f79458","updated":"2014-07-15 22:33:54.000000000","message":"A fix will be in the next patch.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                            format\u003dstreamformat)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def _get_keystone_session(self, **kwargs):"},{"line_number":674,"context_line":"        # first create a Keystone session"},{"line_number":675,"context_line":"        cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":676,"context_line":"        cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":677,"context_line":"        key \u003d kwargs.pop(\u0027key\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_57b0f88a","line":674,"updated":"2014-07-10 22:27:17.000000000","message":"Haven\u0027t there already been some additions to allow keystone sessions to be used?  Is this replacing that code?","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":671,"context_line":"                            format\u003dstreamformat)"},{"line_number":672,"context_line":""},{"line_number":673,"context_line":"    def _get_keystone_session(self, **kwargs):"},{"line_number":674,"context_line":"        # first create a Keystone session"},{"line_number":675,"context_line":"        cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":676,"context_line":"        cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":677,"context_line":"        key \u003d kwargs.pop(\u0027key\u0027, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a95a4228","line":674,"in_reply_to":"baada198_57b0f88a","updated":"2014-07-15 22:33:54.000000000","message":"Jamie Lennox added SessionClient.  This change is to take advantage of that and allow users to take advantage of keystone v3 through CLI.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"87ea37066d7321c41ea5a43362ffa2b73956382c","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                                       \" via either --os-project-id or\""},{"line_number":891,"context_line":"                                       \" env[OS_PROJECT_ID] or a project\""},{"line_number":892,"context_line":"                                       \" name via either --os-project-name or\""},{"line_number":893,"context_line":"                                       \" env[OS_PROJECT_NAME]\")"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"            if not os_auth_url:"},{"line_number":896,"context_line":"                if os_auth_system and os_auth_system !\u003d \u0027keystone\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_373f04d8","line":893,"updated":"2014-07-10 22:27:17.000000000","message":"This is getting awkward.  We should try to make this a bit more user friendly by telling the user exactly what\u0027s missing and what they should set…","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d34a4f5ca76bc173a01cfcaf745296598507e6ef","unresolved":false,"context_lines":[{"line_number":890,"context_line":"                                       \" via either --os-project-id or\""},{"line_number":891,"context_line":"                                       \" env[OS_PROJECT_ID] or a project\""},{"line_number":892,"context_line":"                                       \" name via either --os-project-name or\""},{"line_number":893,"context_line":"                                       \" env[OS_PROJECT_NAME]\")"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"            if not os_auth_url:"},{"line_number":896,"context_line":"                if os_auth_system and os_auth_system !\u003d \u0027keystone\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_497286b1","line":893,"in_reply_to":"baada198_373f04d8","updated":"2014-07-15 22:33:54.000000000","message":"Let me think of something.","commit_id":"0cbf6aeb064c7f5977375ff3c8504c91ea1d3860"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fa42675bd62df8c73e8c2a5015c1ffa030dd4443","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            v3_auth_url \u003d ks_discover.url_for(\u00273.0\u0027)"},{"line_number":633,"context_line":"        except ks_exc.ClientException:"},{"line_number":634,"context_line":"            # Identity service may not support discover API version."},{"line_number":635,"context_line":"            # Let\u0027s trying to figure out the API version from the original URL."},{"line_number":636,"context_line":"            url_parts \u003d urlparse.urlparse(auth_url)"},{"line_number":637,"context_line":"            (scheme, netloc, path, params, query, fragment) \u003d url_parts"},{"line_number":638,"context_line":"            path \u003d path.lower()"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e0b42b84","line":635,"updated":"2014-07-16 15:19:44.000000000","message":"s/trying/try/ (femtonit :)","commit_id":"7460063f3350c6f578d5edd67630a6cbead1542f"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"4d53b94346292fe471c1657dc613da5236865157","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            v3_auth_url \u003d ks_discover.url_for(\u00273.0\u0027)"},{"line_number":633,"context_line":"        except ks_exc.ClientException:"},{"line_number":634,"context_line":"            # Identity service may not support discover API version."},{"line_number":635,"context_line":"            # Let\u0027s trying to figure out the API version from the original URL."},{"line_number":636,"context_line":"            url_parts \u003d urlparse.urlparse(auth_url)"},{"line_number":637,"context_line":"            (scheme, netloc, path, params, query, fragment) \u003d url_parts"},{"line_number":638,"context_line":"            path \u003d path.lower()"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_5a5bff2d","line":635,"in_reply_to":"baada198_e0b42b84","updated":"2014-07-16 16:58:22.000000000","message":"Must be getting too late last night :)  Will fix that in the next patch.","commit_id":"7460063f3350c6f578d5edd67630a6cbead1542f"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e2e0d3a93987503d9dd9fa774d6f57e250ecf205","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        parser.add_argument(\u0027--key-file\u0027,"},{"line_number":258,"context_line":"                            dest\u003d\u0027os_key\u0027,"},{"line_number":259,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-key.\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        parser.add_argument(\u0027--os-cacert\u0027,"},{"line_number":262,"context_line":"                            metavar\u003d\u0027\u003cca-certificate-file\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_597678d9","line":259,"updated":"2014-07-17 18:19:53.000000000","message":"This has never been in novaclient, so let\u0027s not add deprecated options…","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8bc1d55ffc6d2f315ec11b255dc72650aab193bb","unresolved":false,"context_lines":[{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        parser.add_argument(\u0027--key-file\u0027,"},{"line_number":258,"context_line":"                            dest\u003d\u0027os_key\u0027,"},{"line_number":259,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-key.\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        parser.add_argument(\u0027--os-cacert\u0027,"},{"line_number":262,"context_line":"                            metavar\u003d\u0027\u003cca-certificate-file\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_6077d8d4","line":259,"in_reply_to":"baada198_597678d9","updated":"2014-07-18 16:28:10.000000000","message":"Done.","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e2e0d3a93987503d9dd9fa774d6f57e250ecf205","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        parser.add_argument(\u0027--ca-file\u0027,"},{"line_number":271,"context_line":"                            dest\u003d\u0027os_cacert\u0027,"},{"line_number":272,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cacert.\u0027)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        parser.add_argument(\u0027--os-username\u0027,"},{"line_number":275,"context_line":"                            metavar\u003d\u0027\u003cauth-user-name\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_79717cdd","line":272,"updated":"2014-07-17 18:19:53.000000000","message":"Ditto here…","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8bc1d55ffc6d2f315ec11b255dc72650aab193bb","unresolved":false,"context_lines":[{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        parser.add_argument(\u0027--ca-file\u0027,"},{"line_number":271,"context_line":"                            dest\u003d\u0027os_cacert\u0027,"},{"line_number":272,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cacert.\u0027)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        parser.add_argument(\u0027--os-username\u0027,"},{"line_number":275,"context_line":"                            metavar\u003d\u0027\u003cauth-user-name\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a07d70b4","line":272,"in_reply_to":"baada198_79717cdd","updated":"2014-07-18 16:28:10.000000000","message":"Done","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e2e0d3a93987503d9dd9fa774d6f57e250ecf205","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":280,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"},{"line_number":283,"context_line":"                            metavar\u003d\u0027\u003cauth-user-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_19440073","line":280,"updated":"2014-07-17 18:19:53.000000000","message":"Would you mind kicking off a discussion on the list regarding removing these deprecated arguments?","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8bc1d55ffc6d2f315ec11b255dc72650aab193bb","unresolved":false,"context_lines":[{"line_number":277,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":280,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"},{"line_number":283,"context_line":"                            metavar\u003d\u0027\u003cauth-user-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_c028a499","line":280,"in_reply_to":"baada198_19440073","updated":"2014-07-18 16:28:10.000000000","message":"I am leading an effort to move Keystone related arguments back to the keystone client.  I\u0027ve added to my TODO list.","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e2e0d3a93987503d9dd9fa774d6f57e250ecf205","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            v3_auth_url \u003d ks_discover.url_for(\u00273.0\u0027)"},{"line_number":633,"context_line":"        except ks_exc.ClientException:"},{"line_number":634,"context_line":"            # Identity service may not support discover API version."},{"line_number":635,"context_line":"            # Let\u0027s trying to figure out the API version from the original URL."},{"line_number":636,"context_line":"            url_parts \u003d urlparse.urlparse(auth_url)"},{"line_number":637,"context_line":"            (scheme, netloc, path, params, query, fragment) \u003d url_parts"},{"line_number":638,"context_line":"            path \u003d path.lower()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_390f048a","line":635,"updated":"2014-07-17 18:19:53.000000000","message":"s/trying/try/ (femtonit)","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8bc1d55ffc6d2f315ec11b255dc72650aab193bb","unresolved":false,"context_lines":[{"line_number":632,"context_line":"            v3_auth_url \u003d ks_discover.url_for(\u00273.0\u0027)"},{"line_number":633,"context_line":"        except ks_exc.ClientException:"},{"line_number":634,"context_line":"            # Identity service may not support discover API version."},{"line_number":635,"context_line":"            # Let\u0027s trying to figure out the API version from the original URL."},{"line_number":636,"context_line":"            url_parts \u003d urlparse.urlparse(auth_url)"},{"line_number":637,"context_line":"            (scheme, netloc, path, params, query, fragment) \u003d url_parts"},{"line_number":638,"context_line":"            path \u003d path.lower()"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a002d009","line":635,"in_reply_to":"baada198_390f048a","updated":"2014-07-18 16:28:10.000000000","message":"Fixed for real this time :)","commit_id":"2796218422d9f326bb401f99cd05552960859992"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"0a8f269955fac5b05bfd3e5f84c4a09925d966a6","unresolved":false,"context_lines":[{"line_number":662,"context_line":"        timeout \u003d kwargs.pop(\u0027timeout\u0027, None)"},{"line_number":663,"context_line":"        verify \u003d kwargs.pop(\u0027verify\u0027, None)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        # FIXME(dhu): this code should come from keystoneclient"},{"line_number":666,"context_line":"        if verify is None:"},{"line_number":667,"context_line":"            if insecure:"},{"line_number":668,"context_line":"                verify \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_17ae6e2f","line":665,"updated":"2014-07-31 23:13:19.000000000","message":"Does this mean the code is in keystoneclient lib already? If so, why can\u0027t we use it here instead?","commit_id":"4814930581ea66b9a4afe9531256f75cca801b48"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d4b3ce105b1ade61f0a58d55fc4b7bb7a9817793","unresolved":false,"context_lines":[{"line_number":662,"context_line":"        timeout \u003d kwargs.pop(\u0027timeout\u0027, None)"},{"line_number":663,"context_line":"        verify \u003d kwargs.pop(\u0027verify\u0027, None)"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"        # FIXME(dhu): this code should come from keystoneclient"},{"line_number":666,"context_line":"        if verify is None:"},{"line_number":667,"context_line":"            if insecure:"},{"line_number":668,"context_line":"                verify \u003d False"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_e50c4f96","line":665,"in_reply_to":"baada198_17ae6e2f","updated":"2014-08-05 21:36:48.000000000","message":"The code is not in python-keystoneclient yet.","commit_id":"4814930581ea66b9a4afe9531256f75cca801b48"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"43a92495011751335030fab26fbb404301ae5c7c","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":244,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":245,"context_line":"        # refactor this code once this functionality is avaible in"},{"line_number":246,"context_line":"        # python-keystoneclient."},{"line_number":247,"context_line":"        parser.add_argument(\u0027--os-cert\u0027,"},{"line_number":248,"context_line":"                            help\u003d\u0027Path of certificate file to use in SSL \u0027"},{"line_number":249,"context_line":"                            \u0027connection. This file can optionally be \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_efeeb0b5","line":246,"updated":"2014-08-07 10:31:58.000000000","message":"they are available in keystoneclient. \n\nkeystoneclient.session.Session.register_cli_options\nkeystoneclient.auth.register_argparse_arguments","commit_id":"cbf6b2236984c89691465716e8ae5f0d2d4c2dc8"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d0b73de1690bebedb148235a6a911b101eb602a7","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":244,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":245,"context_line":"        # refactor this code once this functionality is avaible in"},{"line_number":246,"context_line":"        # python-keystoneclient."},{"line_number":247,"context_line":"        parser.add_argument(\u0027--os-cert\u0027,"},{"line_number":248,"context_line":"                            help\u003d\u0027Path of certificate file to use in SSL \u0027"},{"line_number":249,"context_line":"                            \u0027connection. This file can optionally be \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_195400fd","line":246,"in_reply_to":"baada198_c5b54433","updated":"2014-08-07 18:14:34.000000000","message":"@Jamie The next patch set will take advantage of keystoneclient.session.Session.register_cli_options.  Since keystoneclient.session.Session.register_cli_options parses only arguments needed for session, the rest of the --os-* arguments will remain in this function until they are available from keystoneclient.\n\nkeystoneclient.auth.register_argparse_arguments does not exactly fit the goal of moving --os-* back to keystoneclient since the caller has to supply a list of arguments, and the list of --os-* shouldn\u0027t be coming from novaclient (the caller).","commit_id":"cbf6b2236984c89691465716e8ae5f0d2d4c2dc8"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d553782d2eb07e78e469da261138769cfac9874f","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":244,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":245,"context_line":"        # refactor this code once this functionality is avaible in"},{"line_number":246,"context_line":"        # python-keystoneclient."},{"line_number":247,"context_line":"        parser.add_argument(\u0027--os-cert\u0027,"},{"line_number":248,"context_line":"                            help\u003d\u0027Path of certificate file to use in SSL \u0027"},{"line_number":249,"context_line":"                            \u0027connection. This file can optionally be \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"baada198_c5b54433","line":246,"in_reply_to":"baada198_efeeb0b5","updated":"2014-08-07 14:49:43.000000000","message":"Thanks Jamie.  Super.  You\u0027ve beat me to it :)","commit_id":"cbf6b2236984c89691465716e8ae5f0d2d4c2dc8"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a0f4134edc1dbe3cc2c90ae4d7dde25bb034769","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":34,"context_line":"from keystoneclient.auth import token_endpoint"},{"line_number":35,"context_line":"from keystoneclient import discover"},{"line_number":36,"context_line":"from keystoneclient.openstack.common.apiclient import exceptions as ks_exc"},{"line_number":37,"context_line":"from keystoneclient import session as kssession"},{"line_number":38,"context_line":"import pkg_resources"},{"line_number":39,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_d504fdc6","line":36,"updated":"2014-08-08 03:37:14.000000000","message":"whoa... reaching into ksc\u0027s oslo-incubator for exceptions? just use from keystoneclient import exceptions","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"a09079f466388a30c4bfce6bef445b644d2a09d7","unresolved":false,"context_lines":[{"line_number":33,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":34,"context_line":"from keystoneclient.auth import token_endpoint"},{"line_number":35,"context_line":"from keystoneclient import discover"},{"line_number":36,"context_line":"from keystoneclient.openstack.common.apiclient import exceptions as ks_exc"},{"line_number":37,"context_line":"from keystoneclient import session as kssession"},{"line_number":38,"context_line":"import pkg_resources"},{"line_number":39,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_606fd893","line":36,"in_reply_to":"baada198_d504fdc6","updated":"2014-08-08 16:28:54.000000000","message":"Done.","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a0f4134edc1dbe3cc2c90ae4d7dde25bb034769","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":260,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"},{"line_number":263,"context_line":"                            metavar\u003d\u0027\u003cauth-user-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_d55dddec","line":260,"updated":"2014-08-08 03:37:14.000000000","message":"why add a bunch of arguments we don\u0027t use? anything that you are supressing here doesn\u0027t really need to be added.","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"a09079f466388a30c4bfce6bef445b644d2a09d7","unresolved":false,"context_lines":[{"line_number":257,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":260,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"},{"line_number":263,"context_line":"                            metavar\u003d\u0027\u003cauth-user-id\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_002ffc3e","line":260,"in_reply_to":"baada198_d55dddec","updated":"2014-08-08 16:28:54.000000000","message":"Done.","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0a0f4134edc1dbe3cc2c90ae4d7dde25bb034769","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        logging.basicConfig(level\u003dlogging.DEBUG,"},{"line_number":628,"context_line":"                            format\u003dstreamformat)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _get_keystone_session(self, **kwargs):"},{"line_number":631,"context_line":"        # first create a Keystone session"},{"line_number":632,"context_line":"        cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":633,"context_line":"        cert \u003d kwargs.pop(\u0027cert\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_15267567","line":630,"updated":"2014-08-08 03:37:14.000000000","message":"you used register_cli_options() above so you can replace this with keystoneclient.session.Session.load_from_cli_options()","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"a09079f466388a30c4bfce6bef445b644d2a09d7","unresolved":false,"context_lines":[{"line_number":627,"context_line":"        logging.basicConfig(level\u003dlogging.DEBUG,"},{"line_number":628,"context_line":"                            format\u003dstreamformat)"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _get_keystone_session(self, **kwargs):"},{"line_number":631,"context_line":"        # first create a Keystone session"},{"line_number":632,"context_line":"        cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":633,"context_line":"        cert \u003d kwargs.pop(\u0027cert\u0027, None)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_40aad484","line":630,"in_reply_to":"baada198_15267567","updated":"2014-08-08 16:28:54.000000000","message":"This is excellent Jamie.","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"26ee4bf9762ec691146f9ac1ca5620126ed1c1a0","unresolved":false,"context_lines":[{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _get_keystone_session(self, **kwargs):"},{"line_number":631,"context_line":"        # first create a Keystone session"},{"line_number":632,"context_line":"        cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":633,"context_line":"        cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":634,"context_line":"        key \u003d kwargs.pop(\u0027key\u0027, None)"},{"line_number":635,"context_line":"        insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_199c000e","line":632,"updated":"2014-08-07 18:35:02.000000000","message":"Since kwargs is not subsequently passed to anything else, you could just use:\n\n    cacert \u003d kwargs.get(\u0027cacert\u0027)","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"a09079f466388a30c4bfce6bef445b644d2a09d7","unresolved":false,"context_lines":[{"line_number":629,"context_line":""},{"line_number":630,"context_line":"    def _get_keystone_session(self, **kwargs):"},{"line_number":631,"context_line":"        # first create a Keystone session"},{"line_number":632,"context_line":"        cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":633,"context_line":"        cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":634,"context_line":"        key \u003d kwargs.pop(\u0027key\u0027, None)"},{"line_number":635,"context_line":"        insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"}],"source_content_type":"text/x-python","patch_set":7,"id":"baada198_00929c4a","line":632,"in_reply_to":"baada198_199c000e","updated":"2014-08-08 16:28:54.000000000","message":"The next patch will get rid of this function all together since keystone now provides a simple way to obtain a session.","commit_id":"50081595f2308bf16a7bf3e8860cba89c4dcde60"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a6295e1f74794de00af370fac333aff444428354","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":269,"context_line":"            help\u003d_(\"Print call timing info\"))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        parser.add_argument(\u0027--timeout\u0027,"},{"line_number":272,"context_line":"            default\u003d600,"},{"line_number":273,"context_line":"            metavar\u003d\u0027\u003cseconds\u003e\u0027,"},{"line_number":274,"context_line":"            type\u003dpositive_non_zero_float,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7252d8db","side":"PARENT","line":271,"updated":"2014-08-12 20:28:22.000000000","message":"Where did this argument go?  It hasn\u0027t been deprecated…","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"94ac548c18fd14c8326ed691063317b9c4183daa","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":269,"context_line":"            help\u003d_(\"Print call timing info\"))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        parser.add_argument(\u0027--timeout\u0027,"},{"line_number":272,"context_line":"            default\u003d600,"},{"line_number":273,"context_line":"            metavar\u003d\u0027\u003cseconds\u003e\u0027,"},{"line_number":274,"context_line":"            type\u003dpositive_non_zero_float,"}],"source_content_type":"text/x-python","patch_set":9,"id":"9ab29df4_3a94bd36","side":"PARENT","line":271,"in_reply_to":"baada198_3fff48b3","updated":"2014-08-13 19:11:05.000000000","message":"Ah ha, I missed that call at the top of _append_global_identity_args(); my bad.","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61aa903d29bb930b3664ec1d3e9fecb5c7d308a5","unresolved":false,"context_lines":[{"line_number":268,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":269,"context_line":"            help\u003d_(\"Print call timing info\"))"},{"line_number":270,"context_line":""},{"line_number":271,"context_line":"        parser.add_argument(\u0027--timeout\u0027,"},{"line_number":272,"context_line":"            default\u003d600,"},{"line_number":273,"context_line":"            metavar\u003d\u0027\u003cseconds\u003e\u0027,"},{"line_number":274,"context_line":"            type\u003dpositive_non_zero_float,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_3fff48b3","side":"PARENT","line":271,"in_reply_to":"baada198_7252d8db","updated":"2014-08-13 04:27:58.000000000","message":"kssession.Session.register_cli_options() has the responsibility to add the following arguments.  The code is available, so I am taking advantage of it.\n\n--insecure\n\n--os-cacert\n\n--os-cert\n\n--os-key\n\n--timeout\n\nhttps://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/session.py#L621","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a6295e1f74794de00af370fac333aff444428354","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            metavar\u003d\u0027\u003cauth-user-name\u003e\u0027,"},{"line_number":283,"context_line":"            default\u003dutils.env(\u0027OS_USERNAME\u0027, \u0027NOVA_USERNAME\u0027),"},{"line_number":284,"context_line":"            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":285,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":286,"context_line":"            help\u003dargparse.SUPPRESS)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_d2ef24f9","side":"PARENT","line":285,"updated":"2014-08-12 20:28:22.000000000","message":"I would love to lose the \u0027_\u0027 variants, but we really need to bring this up on the -dev list to ensure we\u0027ve allowed enough time to pass that we can eliminate them.","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61aa903d29bb930b3664ec1d3e9fecb5c7d308a5","unresolved":false,"context_lines":[{"line_number":282,"context_line":"            metavar\u003d\u0027\u003cauth-user-name\u003e\u0027,"},{"line_number":283,"context_line":"            default\u003dutils.env(\u0027OS_USERNAME\u0027, \u0027NOVA_USERNAME\u0027),"},{"line_number":284,"context_line":"            help\u003d_(\u0027Defaults to env[OS_USERNAME].\u0027))"},{"line_number":285,"context_line":"        parser.add_argument(\u0027--os_username\u0027,"},{"line_number":286,"context_line":"            help\u003dargparse.SUPPRESS)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        parser.add_argument(\u0027--os-user-id\u0027,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_d1b0f18f","side":"PARENT","line":285,"in_reply_to":"baada198_d2ef24f9","updated":"2014-08-13 04:27:58.000000000","message":"I will add it back in.  It really has nothing to do with auth v3 changes.","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a6295e1f74794de00af370fac333aff444428354","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        parser.add_argument(\u0027--os_compute_api_version\u0027,"},{"line_number":373,"context_line":"            help\u003dargparse.SUPPRESS)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        parser.add_argument(\u0027--os-cacert\u0027,"},{"line_number":376,"context_line":"            metavar\u003d\u0027\u003cca-certificate\u003e\u0027,"},{"line_number":377,"context_line":"            default\u003dutils.env(\u0027OS_CACERT\u0027, default\u003dNone),"},{"line_number":378,"context_line":"            help\u003d\u0027Specify a CA bundle file to use in \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_52b954ea","side":"PARENT","line":375,"updated":"2014-08-12 20:28:22.000000000","message":"Where did this argument go?","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61aa903d29bb930b3664ec1d3e9fecb5c7d308a5","unresolved":false,"context_lines":[{"line_number":372,"context_line":"        parser.add_argument(\u0027--os_compute_api_version\u0027,"},{"line_number":373,"context_line":"            help\u003dargparse.SUPPRESS)"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        parser.add_argument(\u0027--os-cacert\u0027,"},{"line_number":376,"context_line":"            metavar\u003d\u0027\u003cca-certificate\u003e\u0027,"},{"line_number":377,"context_line":"            default\u003dutils.env(\u0027OS_CACERT\u0027, default\u003dNone),"},{"line_number":378,"context_line":"            help\u003d\u0027Specify a CA bundle file to use in \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_bf199826","side":"PARENT","line":375,"in_reply_to":"baada198_52b954ea","updated":"2014-08-13 04:27:58.000000000","message":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/session.py#L621","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a6295e1f74794de00af370fac333aff444428354","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                 \u0027verifying a TLS (https) server certificate. \u0027"},{"line_number":380,"context_line":"                 \u0027Defaults to env[OS_CACERT]\u0027)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        parser.add_argument(\u0027--insecure\u0027,"},{"line_number":383,"context_line":"            default\u003dutils.env(\u0027NOVACLIENT_INSECURE\u0027, default\u003dFalse),"},{"line_number":384,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":385,"context_line":"            help\u003d_(\"Explicitly allow novaclient to perform \\\"insecure\\\" \""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_b261d0d7","side":"PARENT","line":382,"updated":"2014-08-12 20:28:22.000000000","message":"Where did this argument go?  Removing it will impact backwards compatibility…","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61aa903d29bb930b3664ec1d3e9fecb5c7d308a5","unresolved":false,"context_lines":[{"line_number":379,"context_line":"                 \u0027verifying a TLS (https) server certificate. \u0027"},{"line_number":380,"context_line":"                 \u0027Defaults to env[OS_CACERT]\u0027)"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"        parser.add_argument(\u0027--insecure\u0027,"},{"line_number":383,"context_line":"            default\u003dutils.env(\u0027NOVACLIENT_INSECURE\u0027, default\u003dFalse),"},{"line_number":384,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":385,"context_line":"            help\u003d_(\"Explicitly allow novaclient to perform \\\"insecure\\\" \""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ff131000","side":"PARENT","line":382,"in_reply_to":"baada198_b261d0d7","updated":"2014-08-13 04:27:58.000000000","message":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/session.py#L621","commit_id":"77991e571b8d6a5b8798c78fb72bbda98d1d6787"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"a6295e1f74794de00af370fac333aff444428354","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_AUTH_URL].\u0027))"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        parser.add_argument(\u0027--os-region-name\u0027,"},{"line_number":315,"context_line":"            metavar\u003d\u0027\u003cregion-name\u003e\u0027,"},{"line_number":316,"context_line":"            default\u003dutils.env(\u0027OS_REGION_NAME\u0027, \u0027NOVA_REGION_NAME\u0027),"},{"line_number":317,"context_line":"            help\u003d_(\u0027Defaults to env[OS_REGION_NAME].\u0027))"},{"line_number":318,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_723bb89b","line":315,"updated":"2014-08-12 20:28:22.000000000","message":"You should pick an indentation style and stick with it… :)","commit_id":"944e0573c78182d3bd7d45c6ae7573d7bad36b40"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61aa903d29bb930b3664ec1d3e9fecb5c7d308a5","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                            help\u003d_(\u0027Defaults to env[OS_AUTH_URL].\u0027))"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        parser.add_argument(\u0027--os-region-name\u0027,"},{"line_number":315,"context_line":"            metavar\u003d\u0027\u003cregion-name\u003e\u0027,"},{"line_number":316,"context_line":"            default\u003dutils.env(\u0027OS_REGION_NAME\u0027, \u0027NOVA_REGION_NAME\u0027),"},{"line_number":317,"context_line":"            help\u003d_(\u0027Defaults to env[OS_REGION_NAME].\u0027))"},{"line_number":318,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ff5b1021","line":315,"in_reply_to":"baada198_723bb89b","updated":"2014-08-13 04:27:58.000000000","message":"Cannot believe I let this happen :)  Will fix it in the next patch.","commit_id":"944e0573c78182d3bd7d45c6ae7573d7bad36b40"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"c0aeed4dc77ccd333ad806ac75fab1460f1c0b81","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        # static token auth only"},{"line_number":597,"context_line":"        if auth_token:"},{"line_number":598,"context_line":"            endpoint \u003d kwargs.pop(\u0027endpoint\u0027, None)"},{"line_number":599,"context_line":"            return token_endpoint.Token(endpoint, auth_token)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"        # discover the supported keystone versions using the given url"},{"line_number":602,"context_line":"        (v2_auth_url, v3_auth_url) \u003d self._discover_auth_versions("}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_04923457","line":599,"updated":"2014-08-14 06:54:45.000000000","message":"There is a bug here.  My bad.  I plan to submit a patch to fix it.  It should do something similar to the following so that an Auth is returned.\n\nt \u003d token_endpoint.Token(endpoint, auth_token)\n\nauth \u003d v*_auth.Token(auth_url, auth_token, **kwargs)\n\nreturn auth","commit_id":"c642a49adc89a15a91d540356a7c3d5ca496aaa5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"df3dcdc3ad463020f7822737fe342b4ceb74228a","unresolved":false,"context_lines":[{"line_number":905,"context_line":"                volume_service_name\u003dvolume_service_name,"},{"line_number":906,"context_line":"                timings\u003dargs.timings, bypass_url\u003dbypass_url,"},{"line_number":907,"context_line":"                os_cache\u003dos_cache, http_log_debug\u003doptions.debug,"},{"line_number":908,"context_line":"                session\u003dkeystone_session, auth\u003dkeystone_auth,"},{"line_number":909,"context_line":"                cacert\u003dcacert, timeout\u003dtimeout)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        args.func(self.cs, args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_0bf96d4d","line":908,"updated":"2014-08-14 00:50:48.000000000","message":"i want this - i really do, but i think you will break more that you think here.\n\nLooking at https://github.com/openstack/python-novaclient/blob/master/novaclient/client.py#L708\n\npassing session means we ignore: \n - bypass_url,\n - timings\n - os_cache\n - auth_system\n - volume_service_name","commit_id":"c642a49adc89a15a91d540356a7c3d5ca496aaa5"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d1cc6ecd016abb2b73ce50527afade1e0d211ba8","unresolved":false,"context_lines":[{"line_number":905,"context_line":"                volume_service_name\u003dvolume_service_name,"},{"line_number":906,"context_line":"                timings\u003dargs.timings, bypass_url\u003dbypass_url,"},{"line_number":907,"context_line":"                os_cache\u003dos_cache, http_log_debug\u003doptions.debug,"},{"line_number":908,"context_line":"                session\u003dkeystone_session, auth\u003dkeystone_auth,"},{"line_number":909,"context_line":"                cacert\u003dcacert, timeout\u003dtimeout)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        args.func(self.cs, args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_672bed82","line":908,"in_reply_to":"7ac7a964_0bf96d4d","updated":"2014-08-14 06:47:17.000000000","message":"It is uncertain how people depending on these parameters will consider the severity of them missing.  I am leaning towards falling back to the original code path if any of these parameters are present.\n\nAny comments?  If I recall correctly, Kevin Mitchell is ok with fixing timing at a later day, so if decides to go the fall back route, then we need a decision on which arg(s) will trigger the fall back.","commit_id":"c642a49adc89a15a91d540356a7c3d5ca496aaa5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"99c53ed527893439d79d19dcee03a5c4d5867010","unresolved":false,"context_lines":[{"line_number":905,"context_line":"                volume_service_name\u003dvolume_service_name,"},{"line_number":906,"context_line":"                timings\u003dargs.timings, bypass_url\u003dbypass_url,"},{"line_number":907,"context_line":"                os_cache\u003dos_cache, http_log_debug\u003doptions.debug,"},{"line_number":908,"context_line":"                session\u003dkeystone_session, auth\u003dkeystone_auth,"},{"line_number":909,"context_line":"                cacert\u003dcacert, timeout\u003dtimeout)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        args.func(self.cs, args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_6204bb15","line":908,"in_reply_to":"7ac7a964_0bf96d4d","updated":"2014-08-14 06:10:31.000000000","message":"Jamie, bypass_url needs to be fixed in keystoneclient LegacyAdapter right? Timings, os_cache, and auth_system won\u0027t be supported by session so this is known trade-offs.\n\nAs for volume_service_name, what is it for and why does session cares?\n\nHow about for this patch, we document the fact that these params will be ignored for Keystone V3 auth? If needed, we can submit followon patches.","commit_id":"c642a49adc89a15a91d540356a7c3d5ca496aaa5"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"1100e55ecf0d913fdb1f76f170329928eb7d981a","unresolved":false,"context_lines":[{"line_number":905,"context_line":"                volume_service_name\u003dvolume_service_name,"},{"line_number":906,"context_line":"                timings\u003dargs.timings, bypass_url\u003dbypass_url,"},{"line_number":907,"context_line":"                os_cache\u003dos_cache, http_log_debug\u003doptions.debug,"},{"line_number":908,"context_line":"                session\u003dkeystone_session, auth\u003dkeystone_auth,"},{"line_number":909,"context_line":"                cacert\u003dcacert, timeout\u003dtimeout)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        args.func(self.cs, args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_628d9b31","line":908,"in_reply_to":"7ac7a964_6204bb15","updated":"2014-08-14 06:23:24.000000000","message":"The other alternative would be if any of the params mentioned above are specified, we fall back to the original code path, which is to use HttpClient instead of session. This means those params and Keystone v3 are mutually exclusive for now as those may be corner cases anyway. We will fix it in a followon patch. Does that sound like a plan?","commit_id":"c642a49adc89a15a91d540356a7c3d5ca496aaa5"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"16c45a954bb131ae59cd48e0ab6569fad518b534","unresolved":false,"context_lines":[{"line_number":905,"context_line":"                volume_service_name\u003dvolume_service_name,"},{"line_number":906,"context_line":"                timings\u003dargs.timings, bypass_url\u003dbypass_url,"},{"line_number":907,"context_line":"                os_cache\u003dos_cache, http_log_debug\u003doptions.debug,"},{"line_number":908,"context_line":"                session\u003dkeystone_session, auth\u003dkeystone_auth,"},{"line_number":909,"context_line":"                cacert\u003dcacert, timeout\u003dtimeout)"},{"line_number":910,"context_line":""},{"line_number":911,"context_line":"        args.func(self.cs, args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7ac7a964_9ea02545","line":908,"in_reply_to":"7ac7a964_672bed82","updated":"2014-08-15 05:32:54.000000000","message":"timings is easy, we can subclass the adapter to get timings back.\n\nos_cache is tricky, i\u0027m looking at the same problem over in keystoneclient, however for auth_system i have no idea, everytime i think i understnd what auth_system is doing i\u0027m wrong.  I think its behaviour might change subtly between all the clients. I thought we\u0027d be able to make a bridging plugin for auth_system but i haven\u0027t put any real time into that.\n\nbypass_url is kind of a design descision that i\u0027m not sure about, i *think* it might need to be a new function to add the override to the auth_plugin - or maybe the session, not sure. \n\nIf the nova guys will accept it i\u0027m happy we can do incremental improvements, just not sure how big a break can be accepted, or how much of this will require a new keystoneclient release.","commit_id":"c642a49adc89a15a91d540356a7c3d5ca496aaa5"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e9891c75acb5cddeceee22b802c99f96005d92eb","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        # FIXME(dhu): these are global identity (Keystone) arguments which"},{"line_number":242,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":243,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":244,"context_line":"        # refactor this code once this functionality is avaible in"},{"line_number":245,"context_line":"        # python-keystoneclient."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # Register arguments needed for a Session"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_d9d1eace","line":244,"updated":"2014-08-18 18:21:29.000000000","message":"s/avaible/available/ (femtonit)","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d1ccc7f9b2931af81a49c7f431b2940d9487b382","unresolved":false,"context_lines":[{"line_number":241,"context_line":"        # FIXME(dhu): these are global identity (Keystone) arguments which"},{"line_number":242,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":243,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":244,"context_line":"        # refactor this code once this functionality is avaible in"},{"line_number":245,"context_line":"        # python-keystoneclient."},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # Register arguments needed for a Session"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_c5bd21b9","line":244,"in_reply_to":"1abeadc6_d9d1eace","updated":"2014-08-20 17:42:21.000000000","message":"good catch!","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e9891c75acb5cddeceee22b802c99f96005d92eb","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        auth_token \u003d kwargs.pop(\u0027auth_token\u0027, None)"},{"line_number":600,"context_line":"        if auth_token:"},{"line_number":601,"context_line":"            return v2_auth.Token(v2_auth_url, auth_token,"},{"line_number":602,"context_line":"                tenant_id\u003dkwargs.pop(\u0027project_id\u0027, None),"},{"line_number":603,"context_line":"                tenant_name\u003dkwargs.pop(\u0027project_name\u0027, None))"},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            return v2_auth.Password(v2_auth_url,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_9995b2e6","line":602,"updated":"2014-08-18 18:21:29.000000000","message":"So, kwargs is not used anywhere later on in this function.  You could replace all these usages of .pop() with .get(); that would also save you from having to specify the default.","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d1ccc7f9b2931af81a49c7f431b2940d9487b382","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        auth_token \u003d kwargs.pop(\u0027auth_token\u0027, None)"},{"line_number":600,"context_line":"        if auth_token:"},{"line_number":601,"context_line":"            return v2_auth.Token(v2_auth_url, auth_token,"},{"line_number":602,"context_line":"                tenant_id\u003dkwargs.pop(\u0027project_id\u0027, None),"},{"line_number":603,"context_line":"                tenant_name\u003dkwargs.pop(\u0027project_name\u0027, None))"},{"line_number":604,"context_line":"        else:"},{"line_number":605,"context_line":"            return v2_auth.Password(v2_auth_url,"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_65c28d35","line":602,"in_reply_to":"1abeadc6_9995b2e6","updated":"2014-08-20 17:42:21.000000000","message":"good idea","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e9891c75acb5cddeceee22b802c99f96005d92eb","unresolved":false,"context_lines":[{"line_number":621,"context_line":"        # supported, then use the highest version if possible."},{"line_number":622,"context_line":"        auth \u003d None"},{"line_number":623,"context_line":"        if v3_auth_url and v2_auth_url:"},{"line_number":624,"context_line":"            user_domain_name \u003d kwargs.get(\u0027user_domain_name\u0027, None)"},{"line_number":625,"context_line":"            user_domain_id \u003d kwargs.get(\u0027user_domain_id\u0027, None)"},{"line_number":626,"context_line":"            project_domain_name \u003d kwargs.get(\u0027project_domain_name\u0027, None)"},{"line_number":627,"context_line":"            project_domain_id \u003d kwargs.get(\u0027project_domain_id\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_39865eba","line":624,"updated":"2014-08-18 18:21:29.000000000","message":"\"None\" is the default value of the, er, \"default\" parameter, FYI (femtonit)","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d1ccc7f9b2931af81a49c7f431b2940d9487b382","unresolved":false,"context_lines":[{"line_number":621,"context_line":"        # supported, then use the highest version if possible."},{"line_number":622,"context_line":"        auth \u003d None"},{"line_number":623,"context_line":"        if v3_auth_url and v2_auth_url:"},{"line_number":624,"context_line":"            user_domain_name \u003d kwargs.get(\u0027user_domain_name\u0027, None)"},{"line_number":625,"context_line":"            user_domain_id \u003d kwargs.get(\u0027user_domain_id\u0027, None)"},{"line_number":626,"context_line":"            project_domain_name \u003d kwargs.get(\u0027project_domain_name\u0027, None)"},{"line_number":627,"context_line":"            project_domain_id \u003d kwargs.get(\u0027project_domain_id\u0027, None)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_256fb52c","line":624,"in_reply_to":"1abeadc6_39865eba","updated":"2014-08-20 17:42:21.000000000","message":"good info for Python newbie (David) :)","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"084d1d200a584dd03012b1905a679452e78f4570","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        # The auth-system-plugins might require some extra options"},{"line_number":438,"context_line":"        novaclient.auth_plugin.load_auth_system_opts(parser)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # FIXME(dhu): this method should come from python-keystoneclient."},{"line_number":441,"context_line":"        # Will refactor this code once it is available."},{"line_number":442,"context_line":"        # https://bugs.launchpad.net/python-keystoneclient/+bug/1332337"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_92cf0657","line":440,"updated":"2014-09-18 22:38:10.000000000","message":"I assume this is the same fixme as above.\n\nThis bug is marked fix released","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"10439ad2b58d763d0bfc381dffcd8b2b4393c6c6","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        # The auth-system-plugins might require some extra options"},{"line_number":438,"context_line":"        novaclient.auth_plugin.load_auth_system_opts(parser)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # FIXME(dhu): this method should come from python-keystoneclient."},{"line_number":441,"context_line":"        # Will refactor this code once it is available."},{"line_number":442,"context_line":"        # https://bugs.launchpad.net/python-keystoneclient/+bug/1332337"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_b2eb11db","line":440,"in_reply_to":"fa98f980_92cf0657","updated":"2014-09-19 18:17:08.000000000","message":"Yes, same fixme as above.  Jamie Lennox implemented bunch of excellent building blocks already.  I like to see something similar to kssession.Session.register_cli_options so that python clients can call, but also for the auth arguments.  In my opinion, the bug is not complete without it.\n\nThe code is ready to be merged.  We can re-factor later.","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"171552a90096c900afe1e567caf82c9b96bacce6","unresolved":false,"context_lines":[{"line_number":437,"context_line":"        # The auth-system-plugins might require some extra options"},{"line_number":438,"context_line":"        novaclient.auth_plugin.load_auth_system_opts(parser)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"        # FIXME(dhu): this method should come from python-keystoneclient."},{"line_number":441,"context_line":"        # Will refactor this code once it is available."},{"line_number":442,"context_line":"        # https://bugs.launchpad.net/python-keystoneclient/+bug/1332337"},{"line_number":443,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_14ea0aac","line":440,"in_reply_to":"fa98f980_b2eb11db","updated":"2014-09-19 18:42:14.000000000","message":"why not refactor now?","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"084d1d200a584dd03012b1905a679452e78f4570","unresolved":false,"context_lines":[{"line_number":549,"context_line":"                subparser.add_argument(*args, **kwargs)"},{"line_number":550,"context_line":"            subparser.set_defaults(func\u003dcallback)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _discover_auth_versions(self, session, auth_url):"},{"line_number":553,"context_line":"        # discover the API versions the server is supporting base on the"},{"line_number":554,"context_line":"        # given URL"},{"line_number":555,"context_line":"        v2_auth_url \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_f2ebf2a1","line":552,"updated":"2014-09-18 22:38:10.000000000","message":"this looks like something that keystoneclient could have","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"171552a90096c900afe1e567caf82c9b96bacce6","unresolved":false,"context_lines":[{"line_number":549,"context_line":"                subparser.add_argument(*args, **kwargs)"},{"line_number":550,"context_line":"            subparser.set_defaults(func\u003dcallback)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _discover_auth_versions(self, session, auth_url):"},{"line_number":553,"context_line":"        # discover the API versions the server is supporting base on the"},{"line_number":554,"context_line":"        # given URL"},{"line_number":555,"context_line":"        v2_auth_url \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_b4dcde19","line":552,"in_reply_to":"fa98f980_f2ebd90f","updated":"2014-09-19 18:42:14.000000000","message":"when will that happen?","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"10439ad2b58d763d0bfc381dffcd8b2b4393c6c6","unresolved":false,"context_lines":[{"line_number":549,"context_line":"                subparser.add_argument(*args, **kwargs)"},{"line_number":550,"context_line":"            subparser.set_defaults(func\u003dcallback)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"    def _discover_auth_versions(self, session, auth_url):"},{"line_number":553,"context_line":"        # discover the API versions the server is supporting base on the"},{"line_number":554,"context_line":"        # given URL"},{"line_number":555,"context_line":"        v2_auth_url \u003d None"}],"source_content_type":"text/x-python","patch_set":15,"id":"fa98f980_f2ebd90f","line":552,"in_reply_to":"fa98f980_f2ebf2a1","updated":"2014-09-19 18:17:08.000000000","message":"Once version independent plugin is available in the next keystone client release, we can move python client away from these stuff.","commit_id":"2ad12b7d315de0277fffb499b5761e4c3b72851d"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":241,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":242,"context_line":"        # refactor this code once this functionality is available in"},{"line_number":243,"context_line":"        # python-keystoneclient."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        # Register arguments needed for a Session"},{"line_number":246,"context_line":"        kssession.Session.register_cli_options(parser)"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_7ecd3386","line":243,"updated":"2014-10-10 21:17:58.000000000","message":"when will that happen?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        # should be consistent and shared by all service clients. Therefore,"},{"line_number":241,"context_line":"        # they should be provided by python-keystoneclient. We will need to"},{"line_number":242,"context_line":"        # refactor this code once this functionality is available in"},{"line_number":243,"context_line":"        # python-keystoneclient."},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"        # Register arguments needed for a Session"},{"line_number":246,"context_line":"        kssession.Session.register_cli_options(parser)"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_095e8fe9","line":243,"in_reply_to":"baa201ad_7ecd3386","updated":"2014-10-13 18:02:55.000000000","message":"Will let you know as soon as I have the info.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        # The auth-system-plugins might require some extra options"},{"line_number":435,"context_line":"        novaclient.auth_plugin.load_auth_system_opts(parser)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        self._append_global_identity_args(parser)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_beacfb8d","line":436,"updated":"2014-10-10 21:17:58.000000000","message":"splitting out this code should be one patch. Adding new flags should be a second","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        # The auth-system-plugins might require some extra options"},{"line_number":435,"context_line":"        novaclient.auth_plugin.load_auth_system_opts(parser)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        self._append_global_identity_args(parser)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_e91a2bc5","line":436,"in_reply_to":"baa201ad_beacfb8d","updated":"2014-10-13 18:02:55.000000000","message":"To keep this patch focused, I propose to move the keystone args that were already part of novaclient back to their original line location.  Will propose a separate patch to move all keystone related args to a single function.  Will this work for you?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"95c980cf826835ccbe97c800274b1382100aaa69","unresolved":false,"context_lines":[{"line_number":433,"context_line":""},{"line_number":434,"context_line":"        # The auth-system-plugins might require some extra options"},{"line_number":435,"context_line":"        novaclient.auth_plugin.load_auth_system_opts(parser)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        self._append_global_identity_args(parser)"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"        return parser"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_d53b31c6","line":436,"in_reply_to":"baa201ad_e91a2bc5","updated":"2014-10-13 20:32:50.000000000","message":"That works, although I think doing it on the opposite order would be nice. Pulling out the keystone related args into a single function first.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":574,"context_line":"        self.setup_debugging(options.debug)"},{"line_number":575,"context_line":""},{"line_number":576,"context_line":"        # Discover available auth plugins"},{"line_number":577,"context_line":"        novaclient.auth_plugin.discover_auth_systems()"},{"line_number":578,"context_line":""},{"line_number":579,"context_line":"        # build available subcommands based on version"},{"line_number":580,"context_line":"        self.extensions \u003d self._discover_extensions("}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_1e17c7a4","line":577,"updated":"2014-10-10 21:17:58.000000000","message":"Off topic: I would love to be able to drop this.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            if not (args.os_tenant_id or args.os_tenant_name or"},{"line_number":685,"context_line":"                    args.os_project_id or args.os_project_name):"},{"line_number":686,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":687,"context_line":"                        \" project id via --os-project-name, --os-project-id,\""},{"line_number":688,"context_line":"                        \" env[OS_PROJECT_ID] or env[OS_PROJECT_NAME].  You may\""},{"line_number":689,"context_line":"                        \" use os-project and os-tenant interchangeably.\"))"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_7e3e132b","line":687,"updated":"2014-10-10 21:17:58.000000000","message":"the introduction of os-project should be its own patch.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"95c980cf826835ccbe97c800274b1382100aaa69","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            if not (args.os_tenant_id or args.os_tenant_name or"},{"line_number":685,"context_line":"                    args.os_project_id or args.os_project_name):"},{"line_number":686,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":687,"context_line":"                        \" project id via --os-project-name, --os-project-id,\""},{"line_number":688,"context_line":"                        \" env[OS_PROJECT_ID] or env[OS_PROJECT_NAME].  You may\""},{"line_number":689,"context_line":"                        \" use os-project and os-tenant interchangeably.\"))"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_55858157","line":687,"in_reply_to":"baa201ad_09c76f13","updated":"2014-10-13 20:32:50.000000000","message":"since project and tenant can be used interchangeably, why not 1 patch to add os-project and another to add keystone V3?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"08c600df6830e1eb71a63f6764e08c1376435a47","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            if not (args.os_tenant_id or args.os_tenant_name or"},{"line_number":685,"context_line":"                    args.os_project_id or args.os_project_name):"},{"line_number":686,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":687,"context_line":"                        \" project id via --os-project-name, --os-project-id,\""},{"line_number":688,"context_line":"                        \" env[OS_PROJECT_ID] or env[OS_PROJECT_NAME].  You may\""},{"line_number":689,"context_line":"                        \" use os-project and os-tenant interchangeably.\"))"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_04674a26","line":687,"in_reply_to":"baa201ad_55858157","updated":"2014-10-14 17:26:26.000000000","message":"Let\u0027s stay focus here :)  This patch is about adding Keystone V3 CLI support.  Let\u0027s not separate os-project and 0s-domain into 2 different patches.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":684,"context_line":"            if not (args.os_tenant_id or args.os_tenant_name or"},{"line_number":685,"context_line":"                    args.os_project_id or args.os_project_name):"},{"line_number":686,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":687,"context_line":"                        \" project id via --os-project-name, --os-project-id,\""},{"line_number":688,"context_line":"                        \" env[OS_PROJECT_ID] or env[OS_PROJECT_NAME].  You may\""},{"line_number":689,"context_line":"                        \" use os-project and os-tenant interchangeably.\"))"},{"line_number":690,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_09c76f13","line":687,"in_reply_to":"baa201ad_7e3e132b","updated":"2014-10-13 18:02:55.000000000","message":"This is what this patch is about.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        args.func(self.cs, args)"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"        # Dump timings if Nova auth plugin is used."},{"line_number":819,"context_line":"        if args.timings and auth_plugin:"},{"line_number":820,"context_line":"            self._dump_timings(self.cs.get_timings())"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_fedcc31a","line":819,"updated":"2014-10-10 21:17:58.000000000","message":"huh? don\u0027t dump_timings if keystone is used?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"95c980cf826835ccbe97c800274b1382100aaa69","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        args.func(self.cs, args)"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"        # Dump timings if Nova auth plugin is used."},{"line_number":819,"context_line":"        if args.timings and auth_plugin:"},{"line_number":820,"context_line":"            self._dump_timings(self.cs.get_timings())"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_d5d7b14d","line":819,"in_reply_to":"baa201ad_6970fbdc","updated":"2014-10-13 20:32:50.000000000","message":"That is a big regression, I use --timing a lot in novaclient.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"08c600df6830e1eb71a63f6764e08c1376435a47","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        args.func(self.cs, args)"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"        # Dump timings if Nova auth plugin is used."},{"line_number":819,"context_line":"        if args.timings and auth_plugin:"},{"line_number":820,"context_line":"            self._dump_timings(self.cs.get_timings())"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_84597a5d","line":819,"in_reply_to":"baa201ad_d5d7b14d","updated":"2014-10-14 17:26:26.000000000","message":"Timing has to be handled in a separate patch.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":816,"context_line":"        args.func(self.cs, args)"},{"line_number":817,"context_line":""},{"line_number":818,"context_line":"        # Dump timings if Nova auth plugin is used."},{"line_number":819,"context_line":"        if args.timings and auth_plugin:"},{"line_number":820,"context_line":"            self._dump_timings(self.cs.get_timings())"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_6970fbdc","line":819,"in_reply_to":"baa201ad_fedcc31a","updated":"2014-10-13 18:02:55.000000000","message":"Correct.  Dump_timings is not currently supported.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"2c23e2d0406ab38c263eba2f16a81f122677a8ec","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":270,"context_line":"            help\u003d_(\"Print call timing info\"))"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        parser.add_argument(\u0027--timeout\u0027,"},{"line_number":273,"context_line":"            default\u003d600,"},{"line_number":274,"context_line":"            metavar\u003d\u0027\u003cseconds\u003e\u0027,"},{"line_number":275,"context_line":"            type\u003dpositive_non_zero_float,"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_e72ce19b","side":"PARENT","line":272,"updated":"2014-10-15 01:23:41.000000000","message":"huh?","commit_id":"d6889adb45e290afb0189fca97f8c99b6226aa98"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"1e5b7fb28fbb118595b77faa7f67f3ec2bd3a0e0","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":270,"context_line":"            help\u003d_(\"Print call timing info\"))"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        parser.add_argument(\u0027--timeout\u0027,"},{"line_number":273,"context_line":"            default\u003d600,"},{"line_number":274,"context_line":"            metavar\u003d\u0027\u003cseconds\u003e\u0027,"},{"line_number":275,"context_line":"            type\u003dpositive_non_zero_float,"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_3c27c5b7","side":"PARENT","line":272,"in_reply_to":"baa201ad_3e56dcce","updated":"2014-10-15 17:14:57.000000000","message":"Typo.  I meant to say --timeout.","commit_id":"d6889adb45e290afb0189fca97f8c99b6226aa98"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"ee531785e00a7e5a0ad493c3cbc82503d0d3f091","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":270,"context_line":"            help\u003d_(\"Print call timing info\"))"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        parser.add_argument(\u0027--timeout\u0027,"},{"line_number":273,"context_line":"            default\u003d600,"},{"line_number":274,"context_line":"            metavar\u003d\u0027\u003cseconds\u003e\u0027,"},{"line_number":275,"context_line":"            type\u003dpositive_non_zero_float,"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_3e56dcce","side":"PARENT","line":272,"in_reply_to":"baa201ad_e72ce19b","updated":"2014-10-15 16:39:32.000000000","message":"Keystone client Session.register_cli_options(...) handles --timing couple since couple of patches ago.  See the code that handles below.\n\nhttps://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/session.py#L686","commit_id":"d6889adb45e290afb0189fca97f8c99b6226aa98"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"718fa4366bb3930e31ee32e1de13e56c7a1e6c30","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from keystoneclient.auth.identity.generic import password"},{"line_number":33,"context_line":"from keystoneclient.auth.identity.generic import token"},{"line_number":34,"context_line":"from keystoneclient import session as kssession"},{"line_number":35,"context_line":"from oslo.utils import encodeutils"},{"line_number":36,"context_line":"from oslo.utils import strutils"},{"line_number":37,"context_line":"import pkg_resources"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_de620d3d","line":34,"updated":"2014-10-16 18:30:06.000000000","message":"what does the ks stand for? Should this be ksession.","commit_id":"3d313c7b32edb435cc28b15776b72566644996c6"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"4dd95b6078802805622da919367e09bea964c490","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"from keystoneclient.auth.identity.generic import password"},{"line_number":33,"context_line":"from keystoneclient.auth.identity.generic import token"},{"line_number":34,"context_line":"from keystoneclient import session as kssession"},{"line_number":35,"context_line":"from oslo.utils import encodeutils"},{"line_number":36,"context_line":"from oslo.utils import strutils"},{"line_number":37,"context_line":"import pkg_resources"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_4e43c46b","line":34,"in_reply_to":"baa201ad_de620d3d","updated":"2014-10-17 05:16:22.000000000","message":"Done.","commit_id":"3d313c7b32edb435cc28b15776b72566644996c6"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"2c23e2d0406ab38c263eba2f16a81f122677a8ec","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        args.func(self.cs, args)"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        # Dump timings if Nova auth plugin is used."},{"line_number":810,"context_line":"        if args.timings and auth_plugin:"},{"line_number":811,"context_line":"            self._dump_timings(self.cs.get_timings())"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_a7173944","line":810,"updated":"2014-10-15 01:23:41.000000000","message":"this is still a regression we shouldn\u0027t break the timing flag.","commit_id":"3d313c7b32edb435cc28b15776b72566644996c6"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"ee531785e00a7e5a0ad493c3cbc82503d0d3f091","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        args.func(self.cs, args)"},{"line_number":808,"context_line":""},{"line_number":809,"context_line":"        # Dump timings if Nova auth plugin is used."},{"line_number":810,"context_line":"        if args.timings and auth_plugin:"},{"line_number":811,"context_line":"            self._dump_timings(self.cs.get_timings())"},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_be69ec8d","line":810,"in_reply_to":"baa201ad_a7173944","updated":"2014-10-15 16:39:32.000000000","message":"Will propose a patch asap.","commit_id":"3d313c7b32edb435cc28b15776b72566644996c6"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8b8727471c69b3d85a43484597b2ad33f46fef4b","unresolved":false,"context_lines":[{"line_number":676,"context_line":"                            \"env[OS_USERNAME] or env[OS_USER_ID]\"))"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"            if not any([args.os_tenant_name, args.os_tenant_id,"},{"line_number":679,"context_line":"                        args.os_project_id or args.os_project_name]):"},{"line_number":680,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":681,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":682,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_f67244e2","line":679,"updated":"2014-10-29 16:34:32.000000000","message":"If we\u0027re going to switch to any() here, why leave the \u0027or\u0027?  (femtonit)","commit_id":"00359da9d53496e963e9e490e2e764c3369fa706"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3957ac6b5e53beb5cc95ee9fbf764f99ef5bf9bf","unresolved":false,"context_lines":[{"line_number":676,"context_line":"                            \"env[OS_USERNAME] or env[OS_USER_ID]\"))"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"            if not any([args.os_tenant_name, args.os_tenant_id,"},{"line_number":679,"context_line":"                        args.os_project_id or args.os_project_name]):"},{"line_number":680,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":681,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":682,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_802a8de5","line":679,"in_reply_to":"9aa7fdbe_2df47a86","updated":"2014-10-29 18:02:55.000000000","message":"Yep, that\u0027s what I figured, which is why I highlighted it.","commit_id":"00359da9d53496e963e9e490e2e764c3369fa706"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"1fc719e5a1cf763f4d3c4fd5803ac7ae9de8ed6a","unresolved":false,"context_lines":[{"line_number":676,"context_line":"                            \"env[OS_USERNAME] or env[OS_USER_ID]\"))"},{"line_number":677,"context_line":""},{"line_number":678,"context_line":"            if not any([args.os_tenant_name, args.os_tenant_id,"},{"line_number":679,"context_line":"                        args.os_project_id or args.os_project_name]):"},{"line_number":680,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":681,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":682,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_2df47a86","line":679,"in_reply_to":"9aa7fdbe_f67244e2","updated":"2014-10-29 18:00:18.000000000","message":"Morgan might of unintentionally left the \u0027or\u0027 in there, which should be a \u0027,\u0027 in this case :)","commit_id":"00359da9d53496e963e9e490e2e764c3369fa706"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"8b8727471c69b3d85a43484597b2ad33f46fef4b","unresolved":false,"context_lines":[{"line_number":681,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":682,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""},{"line_number":683,"context_line":"                                         \" or env[OS_PROJECT_NAME]. You may\""},{"line_number":684,"context_line":"                                         \" use os-project and os-tenant\""},{"line_number":685,"context_line":"                                         \" interchangeably.\"))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"            if not os_auth_url:"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_3654cc20","line":684,"updated":"2014-10-29 16:34:32.000000000","message":"Would it make sense to make these the formal option name, e.g., \"use --os-project-id and --os-tenant-id interchangeably\"?","commit_id":"00359da9d53496e963e9e490e2e764c3369fa706"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"1fc719e5a1cf763f4d3c4fd5803ac7ae9de8ed6a","unresolved":false,"context_lines":[{"line_number":681,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":682,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""},{"line_number":683,"context_line":"                                         \" or env[OS_PROJECT_NAME]. You may\""},{"line_number":684,"context_line":"                                         \" use os-project and os-tenant\""},{"line_number":685,"context_line":"                                         \" interchangeably.\"))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"            if not os_auth_url:"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_609be972","line":684,"in_reply_to":"9aa7fdbe_3654cc20","updated":"2014-10-29 18:00:18.000000000","message":"It might get a bit hard to read since we probably need to mention --os-project-name and --os-tenant-name if go down that route.\n\n\"...use --os-project-id and --os-tenant-id, --os-project-name and --os-tenant-name interchangeably\"","commit_id":"00359da9d53496e963e9e490e2e764c3369fa706"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"3957ac6b5e53beb5cc95ee9fbf764f99ef5bf9bf","unresolved":false,"context_lines":[{"line_number":681,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":682,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""},{"line_number":683,"context_line":"                                         \" or env[OS_PROJECT_NAME]. You may\""},{"line_number":684,"context_line":"                                         \" use os-project and os-tenant\""},{"line_number":685,"context_line":"                                         \" interchangeably.\"))"},{"line_number":686,"context_line":""},{"line_number":687,"context_line":"            if not os_auth_url:"}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_6045a9b2","line":684,"in_reply_to":"9aa7fdbe_609be972","updated":"2014-10-29 18:02:55.000000000","message":"*nod* that\u0027s why I phrased this one in the form of a question.","commit_id":"00359da9d53496e963e9e490e2e764c3369fa706"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"853e4e68c7d73cb960b924aebe6143eb56cdf941","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        parser.add_argument(\u0027--os-project-domain-name\u0027,"},{"line_number":281,"context_line":"                            default\u003dutils.env(\u0027OS_PROJECT_DOMAIN_NAME\u0027),"},{"line_number":282,"context_line":"                            help\u003d\u0027Defaults to env[OS_PROJECT_DOMAIN_NAME].\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def get_base_parser(self):"},{"line_number":285,"context_line":"        parser \u003d NovaClientArgumentParser("}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_48743ccf","line":282,"updated":"2014-10-31 15:31:32.000000000","message":"why put these here? they are v3 plugin specific. if you use ksc.auth.register_cli_options then it will add these if needed.","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d5a1d8b5c440d03ee46158f350950e8df4d80dd5","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        parser.add_argument(\u0027--os-project-domain-name\u0027,"},{"line_number":281,"context_line":"                            default\u003dutils.env(\u0027OS_PROJECT_DOMAIN_NAME\u0027),"},{"line_number":282,"context_line":"                            help\u003d\u0027Defaults to env[OS_PROJECT_DOMAIN_NAME].\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def get_base_parser(self):"},{"line_number":285,"context_line":"        parser \u003d NovaClientArgumentParser("}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_b42fb6a0","line":282,"in_reply_to":"7a8c0949_48743ccf","updated":"2014-10-31 22:25:56.000000000","message":"auth.cli.register_argparse_arguments(...)?","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"f69c3ccb7f8ea1ed0f0ac7a808d44c8f1d87fdb7","unresolved":false,"context_lines":[{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        parser.add_argument(\u0027--os-project-domain-name\u0027,"},{"line_number":281,"context_line":"                            default\u003dutils.env(\u0027OS_PROJECT_DOMAIN_NAME\u0027),"},{"line_number":282,"context_line":"                            help\u003d\u0027Defaults to env[OS_PROJECT_DOMAIN_NAME].\u0027)"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"    def get_base_parser(self):"},{"line_number":285,"context_line":"        parser \u003d NovaClientArgumentParser("}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_d75c2bf0","line":282,"in_reply_to":"7a8c0949_b42fb6a0","updated":"2014-11-04 16:29:34.000000000","message":"Done.","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5828ba9ba35c866fabc21f871f87571282ce8ffa","unresolved":false,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class OpenStackComputeShell(object):"},{"line_number":239,"context_line":"    times \u003d []"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def _append_global_identity_args(self, parser):"},{"line_number":242,"context_line":"        # Register the CLI arguments that have moved to the session object."}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_f462f7d6","line":239,"updated":"2014-11-05 14:20:03.000000000","message":"not needed","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":236,"context_line":""},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"class OpenStackComputeShell(object):"},{"line_number":239,"context_line":"    times \u003d []"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    def _append_global_identity_args(self, parser):"},{"line_number":242,"context_line":"        # Register the CLI arguments that have moved to the session object."}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_05458bb2","line":239,"in_reply_to":"7a8c0949_f462f7d6","updated":"2014-11-05 18:00:22.000000000","message":"It is used to measure auth requests.\n\nSee novaclient/shell.py line 663 to 680.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"891c8ebd17f6480df783714e1f547c0d3631e745","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        identity.Password.register_argparse_arguments(parser)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        parser.set_defaults(os_username\u003dutils.env(\u0027OS_USERNAME\u0027,"},{"line_number":251,"context_line":"                            \u0027NOVA_USERNAME\u0027))"},{"line_number":252,"context_line":"        parser.set_defaults(os_password\u003dutils.env(\u0027OS_PASSWORD\u0027,"},{"line_number":253,"context_line":"                            \u0027NOVA_PASSWORD\u0027))"},{"line_number":254,"context_line":"        parser.set_defaults(os_auth_url\u003dutils.env(\u0027OS_AUTH_URL\u0027, \u0027NOVA_URL\u0027))"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_14edc3ef","line":251,"updated":"2014-11-05 14:26:19.000000000","message":"Would be nice if identity.Password.register_argparse_arguments() can set the defaults. May want to file an enhancement bug for this.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        identity.Password.register_argparse_arguments(parser)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"        parser.set_defaults(os_username\u003dutils.env(\u0027OS_USERNAME\u0027,"},{"line_number":251,"context_line":"                            \u0027NOVA_USERNAME\u0027))"},{"line_number":252,"context_line":"        parser.set_defaults(os_password\u003dutils.env(\u0027OS_PASSWORD\u0027,"},{"line_number":253,"context_line":"                            \u0027NOVA_PASSWORD\u0027))"},{"line_number":254,"context_line":"        parser.set_defaults(os_auth_url\u003dutils.env(\u0027OS_AUTH_URL\u0027, \u0027NOVA_URL\u0027))"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_a5267714","line":251,"in_reply_to":"7a8c0949_14edc3ef","updated":"2014-11-05 18:00:22.000000000","message":"That will be nice.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5828ba9ba35c866fabc21f871f87571282ce8ffa","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        auth_token \u003d kwargs.pop(\u0027auth_token\u0027, None)"},{"line_number":512,"context_line":"        if auth_token:"},{"line_number":513,"context_line":"            t \u003d token.Token(auth_url, auth_token, **kwargs)"},{"line_number":514,"context_line":"            return t._do_create_plugin(session)"},{"line_number":515,"context_line":"        else:"},{"line_number":516,"context_line":"            p \u003d password.Password(auth_url,"},{"line_number":517,"context_line":"                username\u003dkwargs.pop(\u0027username\u0027),"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_b4af8fe2","line":514,"updated":"2014-11-05 14:20:03.000000000","message":"_ indicates a private method - why are you doing that? just return the plugin you create.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        auth_token \u003d kwargs.pop(\u0027auth_token\u0027, None)"},{"line_number":512,"context_line":"        if auth_token:"},{"line_number":513,"context_line":"            t \u003d token.Token(auth_url, auth_token, **kwargs)"},{"line_number":514,"context_line":"            return t._do_create_plugin(session)"},{"line_number":515,"context_line":"        else:"},{"line_number":516,"context_line":"            p \u003d password.Password(auth_url,"},{"line_number":517,"context_line":"                username\u003dkwargs.pop(\u0027username\u0027),"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_e5495fd1","line":514,"in_reply_to":"7a8c0949_b4af8fe2","updated":"2014-11-05 18:00:22.000000000","message":"Investigating.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"0c0af4205885e4d19253b2034c344e0469ed6586","unresolved":false,"context_lines":[{"line_number":511,"context_line":"        auth_token \u003d kwargs.pop(\u0027auth_token\u0027, None)"},{"line_number":512,"context_line":"        if auth_token:"},{"line_number":513,"context_line":"            t \u003d token.Token(auth_url, auth_token, **kwargs)"},{"line_number":514,"context_line":"            return t._do_create_plugin(session)"},{"line_number":515,"context_line":"        else:"},{"line_number":516,"context_line":"            p \u003d password.Password(auth_url,"},{"line_number":517,"context_line":"                username\u003dkwargs.pop(\u0027username\u0027),"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_0a8d9731","line":514,"in_reply_to":"7a8c0949_e5495fd1","updated":"2014-11-05 21:16:45.000000000","message":"Done.  Addressed in patch 29.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5828ba9ba35c866fabc21f871f87571282ce8ffa","unresolved":false,"context_lines":[{"line_number":520,"context_line":"                user_domain_id\u003dkwargs.pop(\u0027user_domain_id\u0027),"},{"line_number":521,"context_line":"                user_domain_name\u003dkwargs.pop(\u0027user_domain_name\u0027),"},{"line_number":522,"context_line":"                **kwargs)"},{"line_number":523,"context_line":"            return p._do_create_plugin(session)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"    def main(self, argv):"},{"line_number":526,"context_line":"        # Parse args once to find version and debug settings"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_d4aa5bd1","line":523,"updated":"2014-11-05 14:20:03.000000000","message":"ditto","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"891c8ebd17f6480df783714e1f547c0d3631e745","unresolved":false,"context_lines":[{"line_number":637,"context_line":"                            \"env[OS_USERNAME] or env[OS_USER_ID]\"))"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"            if not any([args.os_tenant_name, args.os_tenant_id,"},{"line_number":640,"context_line":"                        args.os_project_id, args.os_project_name]):"},{"line_number":641,"context_line":"                raise exc.CommandError(_(\"You must provide a project name or\""},{"line_number":642,"context_line":"                                         \" project id via --os-project-name,\""},{"line_number":643,"context_line":"                                         \" --os-project-id, env[OS_PROJECT_ID]\""}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_3489df26","line":640,"updated":"2014-11-05 14:26:19.000000000","message":"may want to canonicalize tenant and project in a future patch","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":660,"context_line":"            project_name \u003d args.os_project_name or args.os_tenant_name"},{"line_number":661,"context_line":"            if use_session:"},{"line_number":662,"context_line":"                # Not using Nova auth plugin, so use keystone"},{"line_number":663,"context_line":"                start_time \u003d time.time()"},{"line_number":664,"context_line":"                keystone_session \u003d ksession.Session.load_from_cli_options(args)"},{"line_number":665,"context_line":"                keystone_auth \u003d self._get_keystone_auth("},{"line_number":666,"context_line":"                    keystone_session,"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_85ec1b91","line":663,"updated":"2014-11-05 18:00:22.000000000","message":"Take the start time before keystone auth.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":675,"context_line":"                    project_name\u003dproject_name,"},{"line_number":676,"context_line":"                    project_domain_id\u003dargs.os_project_domain_id,"},{"line_number":677,"context_line":"                    project_domain_name\u003dargs.os_project_domain_name)"},{"line_number":678,"context_line":"                end_time \u003d time.time()"},{"line_number":679,"context_line":"                self.times.append((\u0027%s %s\u0027 % (\u0027auth_url\u0027, args.os_auth_url),"},{"line_number":680,"context_line":"                    start_time, end_time))"},{"line_number":681,"context_line":""}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_a502f73b","line":678,"updated":"2014-11-05 18:00:22.000000000","message":"Take the end time after keystone auth.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                    project_domain_name\u003dargs.os_project_domain_name)"},{"line_number":678,"context_line":"                end_time \u003d time.time()"},{"line_number":679,"context_line":"                self.times.append((\u0027%s %s\u0027 % (\u0027auth_url\u0027, args.os_auth_url),"},{"line_number":680,"context_line":"                    start_time, end_time))"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"        if (options.os_compute_api_version and"},{"line_number":683,"context_line":"                options.os_compute_api_version !\u003d \u00271.0\u0027):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_a58917cc","line":680,"updated":"2014-11-05 18:00:22.000000000","message":"Append the time diff in self.times.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5828ba9ba35c866fabc21f871f87571282ce8ffa","unresolved":false,"context_lines":[{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        args.func(self.cs, args)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"        if args.timings:"},{"line_number":784,"context_line":"            self._dump_timings(self.times + self.cs.get_timings())"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_14b5c330","line":783,"updated":"2014-11-05 14:20:03.000000000","message":"i don\u0027t see that self.times is used anywhere in what you added here.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":780,"context_line":""},{"line_number":781,"context_line":"        args.func(self.cs, args)"},{"line_number":782,"context_line":""},{"line_number":783,"context_line":"        if args.timings:"},{"line_number":784,"context_line":"            self._dump_timings(self.times + self.cs.get_timings())"},{"line_number":785,"context_line":""},{"line_number":786,"context_line":"    def _dump_timings(self, timings):"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_65364f54","line":783,"in_reply_to":"7a8c0949_14b5c330","updated":"2014-11-05 18:00:22.000000000","message":"See novaclient/shell.py line 663 to 680.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"}],"novaclient/tests/test_shell.py":[{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"421f987e781599b38902810a50f7daaafb636b48","unresolved":false,"context_lines":[{"line_number":290,"context_line":""},{"line_number":291,"context_line":"class ShellTestKeystoneV3(ShellTest):"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    def setUp(self):"},{"line_number":294,"context_line":"        super(ShellTestKeystoneV3, self).setUp()"},{"line_number":295,"context_line":""},{"line_number":296,"context_line":"    def make_env(self, exclude\u003dNone, fake_env\u003dFAKE_ENV):"},{"line_number":297,"context_line":"        if \u0027OS_AUTH_URL\u0027 in fake_env:"}],"source_content_type":"text/x-python","patch_set":20,"id":"9aa7fdbe_5165e743","line":294,"range":{"start_line":293,"start_character":4,"end_line":294,"end_character":48},"updated":"2014-10-19 21:19:57.000000000","message":"It\u0027s not needed","commit_id":"c7fc61bcf3b30b6a49d1978df8806b74d92bda9e"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4ac673006990720f19e1824cd5840b4bba1307bd","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_d2eb1511","line":201,"updated":"2014-10-23 16:09:15.000000000","message":"Why are we configuring logging inside a test?","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"b125f8e5835c66fe9c902a2d03c297ce93640acd","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_d4530037","line":201,"in_reply_to":"9aa7fdbe_0d0e60e5","updated":"2014-10-23 18:07:13.000000000","message":"This is a special case where a message is coming from the keystoneclient, however there is no logging handler.  Python spews a generic message about it, and it screws up the stdout comparison.","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"daf2e1a00dc4152b0e9d2117c2334fda5424a0f8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_e903b00d","line":201,"in_reply_to":"9aa7fdbe_10666b2a","updated":"2014-10-24 18:31:17.000000000","message":"s/kick/mock","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"5a1a72d6d202879a6d0b876cdc1b868bc7391c32","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_da2a478f","line":201,"in_reply_to":"9aa7fdbe_b404bc18","updated":"2014-10-23 19:36:43.000000000","message":"indeed.  Alternatively, and perhaps better if you can pull it off, you could mock out the logging call that keystoneclient is making.  (For that matter, why aren\u0027t we mocking out whatever is calling into keystoneclient in the first place?)","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"0ecee802ba705b63d14266ad05af85452c8c1867","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_0d0e60e5","line":201,"in_reply_to":"9aa7fdbe_d2eb1511","updated":"2014-10-23 16:39:32.000000000","message":"Need to ask David, I just did a rebase to split this up logically with minor code massaging... lets find out.","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e8698cadbfd85675f40e73c27826fa78e2e211ad","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_b404bc18","line":201,"in_reply_to":"9aa7fdbe_d4530037","updated":"2014-10-23 18:09:02.000000000","message":"A comment here would help eliminate this confusion indicating why this is being done.","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"c08cfc7b24be3649967a5d74ccb914065198e9b9","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_10666b2a","line":201,"in_reply_to":"9aa7fdbe_da2a478f","updated":"2014-10-24 04:19:20.000000000","message":"Mocking the entire session object isn\u0027t really a great idea. It would be brittle and very complex. Think of it like trying to mock out an oslo lib, you\u0027re using keystoneckient\u0027s http session manager, you can/should kick the actual http requests, but you still want to make sure you\u0027re getting a sane responses from the underlying object. \n\nMocking the logger is a good alternative. Will need to look into how to do that cleanly.","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"a50211d51113bf5e74fc36b750a9289f2487d5d8","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":199,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":200,"context_line":"    def test_password(self, mock_getpass, mock_stdin):"},{"line_number":201,"context_line":"        logging.basicConfig()"},{"line_number":202,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":22,"id":"9aa7fdbe_3503f80e","line":201,"in_reply_to":"9aa7fdbe_e903b00d","updated":"2014-10-29 00:28:25.000000000","message":"Got a patch coming up that mocks the GET request.  Will no longer need to configure logging here.","commit_id":"04a6da8ed24abd17c718852d7fba289d037ad25c"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"853e4e68c7d73cb960b924aebe6143eb56cdf941","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":200,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":201,"context_line":"    @mock.patch(\u0027keystoneclient._discover.get_version_data\u0027,"},{"line_number":202,"context_line":"        return_value\u003d[{u\u0027status\u0027: u\u0027stable\u0027, u\u0027id\u0027: _id, u\u0027links\u0027: _links}])"},{"line_number":203,"context_line":"    def test_password(self, mock_getpass, mock_stdin, mock_disc_ver):"},{"line_number":204,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_08187480","line":202,"updated":"2014-10-31 15:31:32.000000000","message":"don\u0027t mock.patch outside of your own code - particularly private functions. It will fail later for sure. \n\nYou can easily replicate this with requests_mock and ksc.fixture.DiscoveryList","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"d5a1d8b5c440d03ee46158f350950e8df4d80dd5","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":200,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":201,"context_line":"    @mock.patch(\u0027keystoneclient._discover.get_version_data\u0027,"},{"line_number":202,"context_line":"        return_value\u003d[{u\u0027status\u0027: u\u0027stable\u0027, u\u0027id\u0027: _id, u\u0027links\u0027: _links}])"},{"line_number":203,"context_line":"    def test_password(self, mock_getpass, mock_stdin, mock_disc_ver):"},{"line_number":204,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_141eca70","line":202,"in_reply_to":"7a8c0949_08187480","updated":"2014-10-31 22:25:56.000000000","message":"Will look into it.","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"f69c3ccb7f8ea1ed0f0ac7a808d44c8f1d87fdb7","unresolved":false,"context_lines":[{"line_number":199,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":200,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":201,"context_line":"    @mock.patch(\u0027keystoneclient._discover.get_version_data\u0027,"},{"line_number":202,"context_line":"        return_value\u003d[{u\u0027status\u0027: u\u0027stable\u0027, u\u0027id\u0027: _id, u\u0027links\u0027: _links}])"},{"line_number":203,"context_line":"    def test_password(self, mock_getpass, mock_stdin, mock_disc_ver):"},{"line_number":204,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":205,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"7a8c0949_b7595f00","line":202,"in_reply_to":"7a8c0949_141eca70","updated":"2014-11-04 16:29:34.000000000","message":"Done.","commit_id":"e33bbd4fd2dfa166e18631385094a86f0f9f6937"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"5828ba9ba35c866fabc21f871f87571282ce8ffa","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            self.fail(\u0027CommandError not raised\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    @mock.patch(\u0027novaclient.client.Client\u0027)"},{"line_number":217,"context_line":"    @requests_mock.Mocker()"},{"line_number":218,"context_line":"    def test_nova_endpoint_type(self, mock_client, m):"},{"line_number":219,"context_line":"        self.make_env(fake_env\u003dFAKE_ENV3)"},{"line_number":220,"context_line":"        self.register_keystone_discovery_fixture(m)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_5462ebad","line":217,"updated":"2014-11-05 14:20:03.000000000","message":"typically use\n\nself.requests \u003d self.useFixture(requests_mock.contrib.fixture.Fixture())\n\nin setUp however this works just fine.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"89cf13016b9be4a3a6ce1ca2e11339f62c5d636d","unresolved":false,"context_lines":[{"line_number":214,"context_line":"            self.fail(\u0027CommandError not raised\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    @mock.patch(\u0027novaclient.client.Client\u0027)"},{"line_number":217,"context_line":"    @requests_mock.Mocker()"},{"line_number":218,"context_line":"    def test_nova_endpoint_type(self, mock_client, m):"},{"line_number":219,"context_line":"        self.make_env(fake_env\u003dFAKE_ENV3)"},{"line_number":220,"context_line":"        self.register_keystone_discovery_fixture(m)"}],"source_content_type":"text/x-python","patch_set":28,"id":"7a8c0949_2561a739","line":217,"in_reply_to":"7a8c0949_5462ebad","updated":"2014-11-05 18:00:22.000000000","message":"Thanks for sharing an alternate approach.  I\u0027ve been reading your doc on requests_mock for the past few days.  Very well written :)  It really helped.","commit_id":"54f69fe93000abdbb8054a9503ec8d4040eaa341"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"95b652d4385f673b9b3f4cc798c123cbe87b73f4","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    @mock.patch(\u0027novaclient.client.Client\u0027)"},{"line_number":217,"context_line":"    @requests_mock.Mocker()"},{"line_number":218,"context_line":"    def test_nova_endpoint_type(self, mock_client, m):"},{"line_number":219,"context_line":"        self.make_env(fake_env\u003dFAKE_ENV3)"},{"line_number":220,"context_line":"        self.register_keystone_discovery_fixture(m)"},{"line_number":221,"context_line":"        self.shell(\u0027list\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5a890539_de88da24","line":218,"updated":"2014-11-11 19:52:36.000000000","message":"I would prefer a more descriptive name than \u0027m\u0027; perhaps \u0027mock_requests\u0027?","commit_id":"27a59f6812920acb37bed8439bbcbddaba03e32a"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8fa89c0d8be5ced77664fcbcef5abc5122799fad","unresolved":false,"context_lines":[{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    @mock.patch(\u0027novaclient.client.Client\u0027)"},{"line_number":217,"context_line":"    @requests_mock.Mocker()"},{"line_number":218,"context_line":"    def test_nova_endpoint_type(self, mock_client, m):"},{"line_number":219,"context_line":"        self.make_env(fake_env\u003dFAKE_ENV3)"},{"line_number":220,"context_line":"        self.register_keystone_discovery_fixture(m)"},{"line_number":221,"context_line":"        self.shell(\u0027list\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5a890539_fe6836f7","line":218,"in_reply_to":"5a890539_de88da24","updated":"2014-11-11 20:14:36.000000000","message":"I like the idea.  I will push a patch to rename m to mock_requests.","commit_id":"27a59f6812920acb37bed8439bbcbddaba03e32a"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8fa89c0d8be5ced77664fcbcef5abc5122799fad","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    @mock.patch(\u0027novaclient.client.Client\u0027)"},{"line_number":226,"context_line":"    @requests_mock.Mocker()"},{"line_number":227,"context_line":"    def test_os_endpoint_type(self, mock_client, m):"},{"line_number":228,"context_line":"        self.make_env(exclude\u003d\u0027NOVA_ENDPOINT_TYPE\u0027, fake_env\u003dFAKE_ENV3)"},{"line_number":229,"context_line":"        self.register_keystone_discovery_fixture(m)"},{"line_number":230,"context_line":"        self.shell(\u0027list\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"5a890539_7e7446cf","line":227,"updated":"2014-11-11 20:14:36.000000000","message":"This one (m to m_requests) as well.","commit_id":"27a59f6812920acb37bed8439bbcbddaba03e32a"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8fa89c0d8be5ced77664fcbcef5abc5122799fad","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @mock.patch(\u0027sys.stdin\u0027, side_effect\u003dmock.MagicMock)"},{"line_number":242,"context_line":"    @mock.patch(\u0027getpass.getpass\u0027, return_value\u003d\u0027password\u0027)"},{"line_number":243,"context_line":"    @requests_mock.Mocker()"},{"line_number":244,"context_line":"    def test_password(self, mock_getpass, mock_stdin, m):"},{"line_number":245,"context_line":"        mock_stdin.encoding \u003d \"utf-8\""},{"line_number":246,"context_line":""},{"line_number":247,"context_line":"        # default output of empty tables differs depending between prettytable"}],"source_content_type":"text/x-python","patch_set":29,"id":"5a890539_9e81f291","line":244,"updated":"2014-11-11 20:14:36.000000000","message":"...and this one (m to mock_requests).","commit_id":"27a59f6812920acb37bed8439bbcbddaba03e32a"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"8fa89c0d8be5ced77664fcbcef5abc5122799fad","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        env \u003d dict((k, v) for k, v in fake_env.items() if k !\u003d exclude)"},{"line_number":340,"context_line":"        self.useFixture(fixtures.MonkeyPatch(\u0027os.environ\u0027, env))"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"    def register_keystone_discovery_fixture(self, m):"},{"line_number":343,"context_line":"        v3_url \u003d \"http://no.where/v3\""},{"line_number":344,"context_line":"        v3_version \u003d fixture.V3Discovery(v3_url)"},{"line_number":345,"context_line":"        m.register_uri(\u0027GET\u0027, v3_url, json\u003d_create_version_list([v3_version]),"}],"source_content_type":"text/x-python","patch_set":29,"id":"5a890539_a11daf68","line":342,"updated":"2014-11-11 20:14:36.000000000","message":"...and this one (m to m_requests).","commit_id":"27a59f6812920acb37bed8439bbcbddaba03e32a"}],"novaclient/tests/v1_1/test_shell.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"e0ec88b386e684710ee0cc48fd143867cb0bd656","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    @mock.patch(\u0027sys.stdout\u0027, new_callable\u003dsix.StringIO)"},{"line_number":75,"context_line":"    def run_command(self, cmd, mock_stdout):"},{"line_number":76,"context_line":"        print(\"\u003d\u003d\u003d\u003e\")"},{"line_number":77,"context_line":"        print(cmd)"},{"line_number":78,"context_line":"        if isinstance(cmd, list):"},{"line_number":79,"context_line":"            self.shell.main(cmd)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_4fa5f145","line":76,"updated":"2014-07-09 22:36:55.000000000","message":"Removed in the next patch","commit_id":"2e9adb7107159c5635319b0103aca0c89da7f6cf"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"e0ec88b386e684710ee0cc48fd143867cb0bd656","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    @mock.patch(\u0027sys.stdout\u0027, new_callable\u003dsix.StringIO)"},{"line_number":75,"context_line":"    def run_command(self, cmd, mock_stdout):"},{"line_number":76,"context_line":"        print(\"\u003d\u003d\u003d\u003e\")"},{"line_number":77,"context_line":"        print(cmd)"},{"line_number":78,"context_line":"        if isinstance(cmd, list):"},{"line_number":79,"context_line":"            self.shell.main(cmd)"},{"line_number":80,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":1,"id":"baada198_efafa529","line":77,"updated":"2014-07-09 22:36:55.000000000","message":"Removed in the next patch.","commit_id":"2e9adb7107159c5635319b0103aca0c89da7f6cf"}],"novaclient/v1_1/client.py":[{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def set_management_url(self, url):"},{"line_number":218,"context_line":"        self.client.set_management_url(url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @client._original_only"},{"line_number":221,"context_line":"    def get_timings(self):"},{"line_number":222,"context_line":"        return self.client.get_timings()"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_7eda93ea","side":"PARENT","line":220,"updated":"2014-10-10 21:17:58.000000000","message":"huh?","commit_id":"d6889adb45e290afb0189fca97f8c99b6226aa98"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    @client._original_only"},{"line_number":217,"context_line":"    def set_management_url(self, url):"},{"line_number":218,"context_line":"        self.client.set_management_url(url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    def get_timings(self):"},{"line_number":221,"context_line":"        return self.client.get_timings()"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_14822252","line":219,"updated":"2014-10-13 18:02:55.000000000","message":"Should keep @client._original_only in the code since get_timings(...) and reset_timings(...) are not implemented.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"a4cd9a9f74abfce3c2109bff3117dbef7209cb38","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def set_management_url(self, url):"},{"line_number":218,"context_line":"        self.client.set_management_url(url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @client._original_only"},{"line_number":221,"context_line":"    def get_timings(self):"},{"line_number":222,"context_line":"        return self.client.get_timings()"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9aa7fdbe_149fbb51","side":"PARENT","line":220,"updated":"2014-10-29 20:52:34.000000000","message":"Is removing this  still needed?","commit_id":"c8a7e6a02db72241acb61d4f994b96ae351b61d5"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"12074617f73a0de841ea7d24b8d5c06659aeaa3f","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    def set_management_url(self, url):"},{"line_number":218,"context_line":"        self.client.set_management_url(url)"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    @client._original_only"},{"line_number":221,"context_line":"    def get_timings(self):"},{"line_number":222,"context_line":"        return self.client.get_timings()"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"7a8c0949_0e742b9b","side":"PARENT","line":220,"in_reply_to":"9aa7fdbe_149fbb51","updated":"2014-10-29 21:07:04.000000000","message":"Yes, removal is needed because timing is implemented now.\n\nIf not removed, the following error message will show up when user specifies --timings.\n\nERROR (InvalidUsage): This call is no longer available.","commit_id":"c8a7e6a02db72241acb61d4f994b96ae351b61d5"}],"novaclient/v1_1/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"e9891c75acb5cddeceee22b802c99f96005d92eb","unresolved":false,"context_lines":[{"line_number":2696,"context_line":"            sc \u003d auth.get_access(cs.client.session).service_catalog"},{"line_number":2697,"context_line":"            catalog \u003d sc.catalog"},{"line_number":2698,"context_line":"            if (isinstance(cs.client.auth, v3_auth.Password) or"},{"line_number":2699,"context_line":"                isinstance(cs.client.auth, v3_auth.Token)):"},{"line_number":2700,"context_line":"                project_id \u003d catalog[\u0027project\u0027][\u0027id\u0027]"},{"line_number":2701,"context_line":"                usage \u003d cs.usage.get(project_id, start, end)"},{"line_number":2702,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_997932ff","line":2699,"updated":"2014-08-18 18:21:29.000000000","message":"It would be nice to indent this line another 4 spaces to visually distinguish it from the code that follows it.\n\nAnother thought that occurs to me—could v3_auth.Password and v3_auth.Token be altered to descend from the same superclass?  Then you could use just a single isinstance() call on that superclass.","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"d1ccc7f9b2931af81a49c7f431b2940d9487b382","unresolved":false,"context_lines":[{"line_number":2696,"context_line":"            sc \u003d auth.get_access(cs.client.session).service_catalog"},{"line_number":2697,"context_line":"            catalog \u003d sc.catalog"},{"line_number":2698,"context_line":"            if (isinstance(cs.client.auth, v3_auth.Password) or"},{"line_number":2699,"context_line":"                isinstance(cs.client.auth, v3_auth.Token)):"},{"line_number":2700,"context_line":"                project_id \u003d catalog[\u0027project\u0027][\u0027id\u0027]"},{"line_number":2701,"context_line":"                usage \u003d cs.usage.get(project_id, start, end)"},{"line_number":2702,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"1abeadc6_059d5959","line":2699,"in_reply_to":"1abeadc6_997932ff","updated":"2014-08-20 17:42:21.000000000","message":"Good suggestion! Yes, both Password and Token shared the same base class. Will make the change.","commit_id":"91a50157fc006de2f104a0e05d3990027c595ac3"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"052af5519a086d73eade5f64c5ba9eb3637a63dd","unresolved":false,"context_lines":[{"line_number":28,"context_line":"import sys"},{"line_number":29,"context_line":"import time"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from keystoneclient.auth.identity import v3 as keystone_v3_auth"},{"line_number":32,"context_line":"from oslo.utils import encodeutils"},{"line_number":33,"context_line":"from oslo.utils import strutils"},{"line_number":34,"context_line":"from oslo.utils import timeutils"}],"source_content_type":"text/x-python","patch_set":19,"id":"baa201ad_19fbbdc1","line":31,"updated":"2014-10-17 11:11:27.000000000","message":"F401 \u0027keystone_v3_auth\u0027 imported but unused","commit_id":"e9ab9e08b58cbfe47ba1d508627afa747474fb41"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"1d872eb5d32cba74131f5af5d28f397080ada3aa","unresolved":false,"context_lines":[{"line_number":28,"context_line":"import sys"},{"line_number":29,"context_line":"import time"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from keystoneclient.auth.identity import v3 as keystone_v3_auth"},{"line_number":32,"context_line":"from oslo.utils import encodeutils"},{"line_number":33,"context_line":"from oslo.utils import strutils"},{"line_number":34,"context_line":"from oslo.utils import timeutils"}],"source_content_type":"text/x-python","patch_set":19,"id":"baa201ad_255a0ff2","line":31,"in_reply_to":"baa201ad_19fbbdc1","updated":"2014-10-17 15:28:39.000000000","message":"Done.","commit_id":"e9ab9e08b58cbfe47ba1d508627afa747474fb41"}],"novaclient/v3/client.py":[{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":173,"context_line":"    @client._original_only"},{"line_number":174,"context_line":"    def set_management_url(self, url):"},{"line_number":175,"context_line":"        self.client.set_management_url(url)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def get_timings(self):"},{"line_number":178,"context_line":"        return self.client.get_timings()"},{"line_number":179,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_547caa72","line":176,"updated":"2014-10-13 18:02:55.000000000","message":"Should keep @client._original_only in the code since get_timings(...) and reset_timings(...) are not implemented.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"}],"novaclient/v3/shell.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fa42675bd62df8c73e8c2a5015c1ffa030dd4443","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":31,"context_line":"import six"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from novaclient.client import SessionClient"},{"line_number":34,"context_line":"from novaclient import exceptions"},{"line_number":35,"context_line":"from novaclient.openstack.common import strutils"},{"line_number":36,"context_line":"from novaclient.openstack.common import timeutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_8611c855","line":33,"updated":"2014-07-16 15:19:44.000000000","message":"Don\u0027t import objects, please; would really like to stick with just importing modules.","commit_id":"7460063f3350c6f578d5edd67630a6cbead1542f"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"4d53b94346292fe471c1657dc613da5236865157","unresolved":false,"context_lines":[{"line_number":30,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":31,"context_line":"import six"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"from novaclient.client import SessionClient"},{"line_number":34,"context_line":"from novaclient import exceptions"},{"line_number":35,"context_line":"from novaclient.openstack.common import strutils"},{"line_number":36,"context_line":"from novaclient.openstack.common import timeutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_7a38c3d4","line":33,"in_reply_to":"baada198_8611c855","updated":"2014-07-16 16:58:22.000000000","message":"WILCO.  Will fix up other files as well, so that only modules are imported.","commit_id":"7460063f3350c6f578d5edd67630a6cbead1542f"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":2705,"context_line":"        cs.client.authenticate()"},{"line_number":2706,"context_line":""},{"line_number":2707,"context_line":""},{"line_number":2708,"context_line":"def do_endpoints(cs, _args):"},{"line_number":2709,"context_line":"    \"\"\"Discover endpoints that get returned from the authenticate services.\"\"\""},{"line_number":2710,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2711,"context_line":"        auth \u003d cs.client.auth"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_1ef34774","line":2708,"updated":"2014-10-10 21:17:58.000000000","message":"where is the unit test for this?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":2705,"context_line":"        cs.client.authenticate()"},{"line_number":2706,"context_line":""},{"line_number":2707,"context_line":""},{"line_number":2708,"context_line":"def do_endpoints(cs, _args):"},{"line_number":2709,"context_line":"    \"\"\"Discover endpoints that get returned from the authenticate services.\"\"\""},{"line_number":2710,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2711,"context_line":"        auth \u003d cs.client.auth"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_cfb8072d","line":2708,"in_reply_to":"baa201ad_1ef34774","updated":"2014-10-13 18:02:55.000000000","message":"Tempest covers endpoints.  I would love to help increase unit test code coverage.  Perhaps in a separate patch?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"95c980cf826835ccbe97c800274b1382100aaa69","unresolved":false,"context_lines":[{"line_number":2705,"context_line":"        cs.client.authenticate()"},{"line_number":2706,"context_line":""},{"line_number":2707,"context_line":""},{"line_number":2708,"context_line":"def do_endpoints(cs, _args):"},{"line_number":2709,"context_line":"    \"\"\"Discover endpoints that get returned from the authenticate services.\"\"\""},{"line_number":2710,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2711,"context_line":"        auth \u003d cs.client.auth"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_f59e7562","line":2708,"in_reply_to":"baa201ad_cfb8072d","updated":"2014-10-13 20:32:50.000000000","message":"The same patch that makes this logic more complex should add unit tests for it. If you like you can break this function into smaller more unit testable chunks and only add unit tests for the additions.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"08c600df6830e1eb71a63f6764e08c1376435a47","unresolved":false,"context_lines":[{"line_number":2705,"context_line":"        cs.client.authenticate()"},{"line_number":2706,"context_line":""},{"line_number":2707,"context_line":""},{"line_number":2708,"context_line":"def do_endpoints(cs, _args):"},{"line_number":2709,"context_line":"    \"\"\"Discover endpoints that get returned from the authenticate services.\"\"\""},{"line_number":2710,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2711,"context_line":"        auth \u003d cs.client.auth"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_a42f5ea0","line":2708,"in_reply_to":"baa201ad_f59e7562","updated":"2014-10-14 17:26:26.000000000","message":"I like the smaller testable chunks idea.  Was thinking about implementing it from CLI pespective, but that requires a bigger effort.","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4785b0240347fd8b983d4535be3a1753e11be6a2","unresolved":false,"context_lines":[{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":"@utils.arg(\u0027--wrap\u0027, dest\u003d\u0027wrap\u0027, metavar\u003d\u0027\u003cinteger\u003e\u0027, default\u003d64,"},{"line_number":2766,"context_line":"           help\u003d\u0027wrap PKI tokens to a specified length, or 0 to disable\u0027)"},{"line_number":2767,"context_line":"def do_credentials(cs, _args):"},{"line_number":2768,"context_line":"    \"\"\"Show user credentials returned from auth.\"\"\""},{"line_number":2769,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2770,"context_line":"        auth \u003d cs.client.auth"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_3ee80b7c","line":2767,"updated":"2014-10-10 21:17:58.000000000","message":"and this","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"7fe460bba54849a343b528114b16c8a746a41852","unresolved":false,"context_lines":[{"line_number":2764,"context_line":""},{"line_number":2765,"context_line":"@utils.arg(\u0027--wrap\u0027, dest\u003d\u0027wrap\u0027, metavar\u003d\u0027\u003cinteger\u003e\u0027, default\u003d64,"},{"line_number":2766,"context_line":"           help\u003d\u0027wrap PKI tokens to a specified length, or 0 to disable\u0027)"},{"line_number":2767,"context_line":"def do_credentials(cs, _args):"},{"line_number":2768,"context_line":"    \"\"\"Show user credentials returned from auth.\"\"\""},{"line_number":2769,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2770,"context_line":"        auth \u003d cs.client.auth"}],"source_content_type":"text/x-python","patch_set":17,"id":"baa201ad_14eea28b","line":2767,"in_reply_to":"baa201ad_3ee80b7c","updated":"2014-10-13 18:02:55.000000000","message":"Tempest covers it.  There is no novaclient unit test that covers sub cmd credentials.  I would love to help increase unit test code coverage.  Perhaps in a separate patch?","commit_id":"ca30e4a3ae95c7aeef12b7f8d0229353a7e6dfc9"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61c308d62006269c0ae4ded2d515b368be84c392","unresolved":false,"context_lines":[{"line_number":2710,"context_line":"    if isinstance(cs.client, client.SessionClient):"},{"line_number":2711,"context_line":"        auth \u003d cs.client.auth"},{"line_number":2712,"context_line":"        sc \u003d auth.get_access(cs.client.session).service_catalog"},{"line_number":2713,"context_line":"        for service in sc.get_data():"},{"line_number":2714,"context_line":"            _print_endpoints(service, cs.client.region_name)"},{"line_number":2715,"context_line":"    else:"},{"line_number":2716,"context_line":"        ensure_service_catalog_present(cs)"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_4f1ea90d","line":2713,"updated":"2014-10-14 22:28:02.000000000","message":"Now using version independent call to get catalog, as oppose to novaclient figuring out the catalog version.  Much much cleaner.","commit_id":"3d313c7b32edb435cc28b15776b72566644996c6"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"61c308d62006269c0ae4ded2d515b368be84c392","unresolved":false,"context_lines":[{"line_number":2763,"context_line":"        sc \u003d auth.get_access(cs.client.session).service_catalog"},{"line_number":2764,"context_line":"        utils.print_dict(sc.catalog[\u0027user\u0027], \"User Credentials\","},{"line_number":2765,"context_line":"            wrap\u003dint(_args.wrap))"},{"line_number":2766,"context_line":"        utils.print_dict(sc.get_token(), \"Token\", wrap\u003dint(_args.wrap))"},{"line_number":2767,"context_line":"    else:"},{"line_number":2768,"context_line":"        ensure_service_catalog_present(cs)"},{"line_number":2769,"context_line":"        catalog \u003d cs.client.service_catalog.catalog"}],"source_content_type":"text/x-python","patch_set":18,"id":"baa201ad_efb11d02","line":2766,"updated":"2014-10-14 22:28:02.000000000","message":"Same thing here.  Much cleaner.","commit_id":"3d313c7b32edb435cc28b15776b72566644996c6"},{"author":{"_account_id":8412,"name":"Mike Durnosvistov","email":"glacierr.dev@gmail.com","username":"mdurnosvistov"},"change_message_id":"052af5519a086d73eade5f64c5ba9eb3637a63dd","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import sys"},{"line_number":28,"context_line":"import time"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":31,"context_line":"from oslo.utils import strutils"},{"line_number":32,"context_line":"from oslo.utils import timeutils"},{"line_number":33,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":19,"id":"baa201ad_7965a9ad","line":30,"updated":"2014-10-17 11:11:27.000000000","message":"F401 \u0027v3_auth\u0027 imported but unused","commit_id":"e9ab9e08b58cbfe47ba1d508627afa747474fb41"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"1d872eb5d32cba74131f5af5d28f397080ada3aa","unresolved":false,"context_lines":[{"line_number":27,"context_line":"import sys"},{"line_number":28,"context_line":"import time"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from keystoneclient.auth.identity import v3 as v3_auth"},{"line_number":31,"context_line":"from oslo.utils import strutils"},{"line_number":32,"context_line":"from oslo.utils import timeutils"},{"line_number":33,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":19,"id":"baa201ad_c56063a7","line":30,"in_reply_to":"baa201ad_7965a9ad","updated":"2014-10-17 15:28:39.000000000","message":"Done.","commit_id":"e9ab9e08b58cbfe47ba1d508627afa747474fb41"}]}
