)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"66626644b124aabf95c5247ca6364f4772268fdd","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Update python-ceilometerclient to support Keystone V3 API"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Keystone is now deprecating the V2 API in favor of the V3 API."},{"line_number":10,"context_line":"The ceilometer client is now using the keystone session to"},{"line_number":11,"context_line":"delegate the discovery of the version that is going to be used,"},{"line_number":12,"context_line":"this eliminates the need of updating the client every time there"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1ae5cdf2_104b52b1","line":9,"updated":"2014-05-30 00:49:13.000000000","message":"I would not include any mention of Keystone deprecating V2 API. I would simply keep the message straight and simple by saying you are adding Keystone V3 API Support. Whether or not V2 API is deprecated doesn\u0027t need to be mentioned - for me it just muddies the water. Because in theory people using the python-ceilometerclient should still be able to use V2 API after this change.","commit_id":"1496ef36713b2b42eb648a576d5f2bfbf685802c"}],"ceilometerclient/client.py":[{"author":{"_account_id":7336,"name":"Phil Neal","email":"phil.neal@hp.com","username":"nealph"},"change_message_id":"316cc8fa8fe475713bd6cfc06bc215f94f371b8f","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _get_keystone_session(**kwargs):"},{"line_number":24,"context_line":"    # first create a Keystone session"},{"line_number":25,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":26,"context_line":"    cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":27,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_6c499530","line":24,"updated":"2014-06-11 14:48:45.000000000","message":"Nitpick: can you provide comments for this section to document the session kwargs?","commit_id":"651bab56adf791502b62d70000057a7b7e0ea92a"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"ffd63af52ff757e704caa5b44b046c2835aee6e3","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _get_keystone_session(**kwargs):"},{"line_number":24,"context_line":"    # first create a Keystone session"},{"line_number":25,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":26,"context_line":"    cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":27,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"}],"source_content_type":"text/x-python","patch_set":7,"id":"1ae5cdf2_d22c0005","line":24,"in_reply_to":"1ae5cdf2_6c499530","updated":"2014-06-11 15:42:26.000000000","message":"Phil, these are the parameters coming from the get_client which are the combination of commandline and environment parameters gathered by shell","commit_id":"651bab56adf791502b62d70000057a7b7e0ea92a"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"645c60f6f770b84707b932562ddf8e035950fb1a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    user_domain_id \u003d kwargs.pop(\u0027user_domain_id\u0027, None)"},{"line_number":55,"context_line":"    auth \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    if v3_auth_url and v2_auth_url:"},{"line_number":58,"context_line":"        #support both v2 and v3 auth. Use v3 if possible."},{"line_number":59,"context_line":"        if username:"},{"line_number":60,"context_line":"            if user_domain_name or user_domain_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_d0377c4b","line":57,"updated":"2014-06-12 11:03:07.000000000","message":"I guess this \"if\" will look better in the following way:\n\nif v3:\n   use v3\nelif v2:\n  use v2\nelse:\n  no versions...\n\n\nas currently you\u0027re having basically the same logic, but with unnecessary 1st check. Correct me if I\u0027m wrong, but it looks like it won\u0027t be any influence here","commit_id":"e714cba987f73a8cea2b550efbb5f41e9cbf39a2"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"68ae0b0ef675421ded48524d3404ec7c5f5b3383","unresolved":false,"context_lines":[{"line_number":54,"context_line":"    user_domain_id \u003d kwargs.pop(\u0027user_domain_id\u0027, None)"},{"line_number":55,"context_line":"    auth \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    if v3_auth_url and v2_auth_url:"},{"line_number":58,"context_line":"        #support both v2 and v3 auth. Use v3 if possible."},{"line_number":59,"context_line":"        if username:"},{"line_number":60,"context_line":"            if user_domain_name or user_domain_id:"}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_52a522a0","line":57,"in_reply_to":"1ae5cdf2_d0377c4b","updated":"2014-06-12 19:49:24.000000000","message":"Dina,\n  I improved the if statement removing useless checks but I still need to evaluate what available auth options there are.\nThe reason is that you can now use the self discovery and so pass http://localhost:5000/ without saying if you want v2 or v3. This will return the v2 and v3 available auth endpoints, but depending on the parameters that you passed I will need to decide if you can go v3 or v2, e.g. domain info.\nI added some comments in the code to make that clearer.\nHTH,\nFabio","commit_id":"e714cba987f73a8cea2b550efbb5f41e9cbf39a2"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"55dbb76a1c309ded894528d441eb20bd737c761a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _get_keystone_session(**kwargs):"},{"line_number":24,"context_line":"    # first create a Keystone session"},{"line_number":25,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":26,"context_line":"    cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":27,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_2e9d61bc","line":24,"updated":"2014-06-14 16:22:07.000000000","message":"Why isn\u0027t this code available in the keystoneclient module?","commit_id":"6ef44d27c065e95a96b179236532eb89394abf2c"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"be70b3863c1ffc567b9183ff4e41c8eb5b8dac89","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def _get_keystone_session(**kwargs):"},{"line_number":24,"context_line":"    # first create a Keystone session"},{"line_number":25,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":26,"context_line":"    cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":27,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_df92bf4a","line":24,"in_reply_to":"1ae5cdf2_2e9d61bc","updated":"2014-06-16 15:38:03.000000000","message":"This is the new way of doing things. In the past you had to select one version of the client. Now using the session you can leave Keystone to figure out what authorization is available. This code is implemented similarly in all the other clients.","commit_id":"6ef44d27c065e95a96b179236532eb89394abf2c"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"55dbb76a1c309ded894528d441eb20bd737c761a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    auth \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    if v3_auth_url and v2_auth_url:"},{"line_number":58,"context_line":"        #the auth_url does not have the versions specified"},{"line_number":59,"context_line":"        #e.g. http://no.where:5000"},{"line_number":60,"context_line":"        #Keystone will return both v2 and v3 as viable options"},{"line_number":61,"context_line":"        #but we need to decide based on the arguments passed"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_0e5b4522","line":58,"updated":"2014-06-14 16:22:07.000000000","message":"pep8 will presumably moan about lack of space after \u0027#\u0027 here and elsewhere?","commit_id":"6ef44d27c065e95a96b179236532eb89394abf2c"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"be70b3863c1ffc567b9183ff4e41c8eb5b8dac89","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    auth \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    if v3_auth_url and v2_auth_url:"},{"line_number":58,"context_line":"        #the auth_url does not have the versions specified"},{"line_number":59,"context_line":"        #e.g. http://no.where:5000"},{"line_number":60,"context_line":"        #Keystone will return both v2 and v3 as viable options"},{"line_number":61,"context_line":"        #but we need to decide based on the arguments passed"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_ffb21b05","line":58,"in_reply_to":"1ae5cdf2_0e5b4522","updated":"2014-06-16 15:38:03.000000000","message":"It actually did not ... but I can add it if you like","commit_id":"6ef44d27c065e95a96b179236532eb89394abf2c"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"49097ecacd4a32fce3db02d2b6e4f5a10eb62fca","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def _get_keystone_session(**kwargs):"},{"line_number":24,"context_line":"    # first create a Keystone session"},{"line_number":25,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":26,"context_line":"    cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":27,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"},{"line_number":28,"context_line":"    auth_url \u003d kwargs.pop(\u0027auth_url\u0027, None)"},{"line_number":29,"context_line":"    tenant_id \u003d kwargs.pop(\u0027tenant_id\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_8e49e762","line":26,"updated":"2014-06-16 17:30:56.000000000","message":"key \u003d kwargs.pop(\u0027key\u0027, None)","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"b6230ece3f77b41e008b1626ba947c09ea62a78e","unresolved":false,"context_lines":[{"line_number":23,"context_line":"def _get_keystone_session(**kwargs):"},{"line_number":24,"context_line":"    # first create a Keystone session"},{"line_number":25,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"},{"line_number":26,"context_line":"    cert \u003d kwargs.pop(\u0027cert\u0027, None)"},{"line_number":27,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"},{"line_number":28,"context_line":"    auth_url \u003d kwargs.pop(\u0027auth_url\u0027, None)"},{"line_number":29,"context_line":"    tenant_id \u003d kwargs.pop(\u0027tenant_id\u0027, None)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_e8fc1e75","line":26,"in_reply_to":"1ae5cdf2_8e49e762","updated":"2014-06-16 18:56:40.000000000","message":"Done","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"49097ecacd4a32fce3db02d2b6e4f5a10eb62fca","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        verify \u003d False"},{"line_number":34,"context_line":"    else:"},{"line_number":35,"context_line":"        verify \u003d cacert or True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # create the keystone client session"},{"line_number":38,"context_line":"    ks_session \u003d session.Session(verify\u003dverify, cert\u003dcert)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_2ea9b3df","line":36,"updated":"2014-06-16 17:30:56.000000000","message":"See https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/session.py#L370\n\n\n    if cert and key:\n            # passing cert and key together is deprecated in favour of the\n            # requests lib form of having the cert and key as a tuple\n            cert \u003d (cert, key)","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"b6230ece3f77b41e008b1626ba947c09ea62a78e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        verify \u003d False"},{"line_number":34,"context_line":"    else:"},{"line_number":35,"context_line":"        verify \u003d cacert or True"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    # create the keystone client session"},{"line_number":38,"context_line":"    ks_session \u003d session.Session(verify\u003dverify, cert\u003dcert)"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_68f00e92","line":36,"in_reply_to":"1ae5cdf2_2ea9b3df","updated":"2014-06-16 18:56:40.000000000","message":"Done. Thanks a lot for the pointer. Reviews like these are really helpful!","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"892bee90ae11e5e63d0b0f560d15bdd5dba9534c","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    else:"},{"line_number":115,"context_line":"        raise exc.CommandError(\u0027Unable to determine the Keystone version \u0027"},{"line_number":116,"context_line":"                               \u0027to authenticate with using the given \u0027"},{"line_number":117,"context_line":"                               \u0027auth_url.\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    ks_session.auth \u003d auth"},{"line_number":120,"context_line":"    return ks_session"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_2bf60091","line":117,"updated":"2014-06-16 19:23:11.000000000","message":"It feels like this detailed special-casing of the v2 versus v3 auth URL is a keystone-specific concern and should be encapsulated within the keystoneclient itself.","commit_id":"9090e79640a035967cf25bfa9ad9624d6b3e20e3"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"51dd28a9f3edc39b4c365326824b97b8d34f9abb","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    else:"},{"line_number":115,"context_line":"        raise exc.CommandError(\u0027Unable to determine the Keystone version \u0027"},{"line_number":116,"context_line":"                               \u0027to authenticate with using the given \u0027"},{"line_number":117,"context_line":"                               \u0027auth_url.\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    ks_session.auth \u003d auth"},{"line_number":120,"context_line":"    return ks_session"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_c1d3bd5d","line":117,"in_reply_to":"1ae5cdf2_2bf60091","updated":"2014-06-16 20:24:33.000000000","message":"A agree, this logic should come from keystoneclient. However, it should not be a showstopper for this patch though. Perhaps we can put a TODO here to remind ourselves we need to further refactor this code once the logic is available from keystoneclient?\n\nAt the meantime, we can also file an enhancement bug against keystoneclient if one hasn\u0027t filed already.","commit_id":"9090e79640a035967cf25bfa9ad9624d6b3e20e3"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"4ac2d565fff03fd0a820bca4c2263613c5428e92","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        raise exc.CommandError(\u0027Unable to determine the Keystone version \u0027"},{"line_number":116,"context_line":"                               \u0027to authenticate with using the given \u0027"},{"line_number":117,"context_line":"                               \u0027auth_url.\u0027)"},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"    ks_session.auth \u003d auth"},{"line_number":120,"context_line":"    return ks_session"},{"line_number":121,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1ae5cdf2_1ca34850","line":118,"updated":"2014-06-16 21:10:54.000000000","message":"Eoghan and Guang, I added a TODO here and filed a bug (https://bugs.launchpad.net/python-keystoneclient/+bug/1330677) against Keystone client.","commit_id":"9090e79640a035967cf25bfa9ad9624d6b3e20e3"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"b22d6e4e1b8224fb526fc22d6a653734197fd6b1","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # TODO(fabgia): the heavy lifting here should be really done by Keystone."},{"line_number":25,"context_line":"    # Unfortunately Keystone does not support a richer method to perform"},{"line_number":26,"context_line":"    # discovery and return a single viable URL. A bug against Keystone has"},{"line_number":27,"context_line":"    # been filed: https://bugs.launchpad.net/pyhton-keystoneclient/+bug/1330677"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # first create a Keystone session"},{"line_number":30,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_ff503c0c","line":27,"updated":"2014-06-17 08:52:30.000000000","message":"I agree that this changeset shouldn\u0027t be blocked on these details but I\u0027m not sure that this todo nor the bug adequately capture the issue that needs to be addressed. That issue is simply that getting an authentic URL from keystoneclient should be a one or two liner: pass in kwargs, get back the endpoint. The vast majority of the code in this module is not specific to ceilometer.","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"7b5af5588dfe61cfba5a9b63eff42c0820af0190","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # TODO(fabgia): the heavy lifting here should be really done by Keystone."},{"line_number":25,"context_line":"    # Unfortunately Keystone does not support a richer method to perform"},{"line_number":26,"context_line":"    # discovery and return a single viable URL. A bug against Keystone has"},{"line_number":27,"context_line":"    # been filed: https://bugs.launchpad.net/pyhton-keystoneclient/+bug/1330677"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # first create a Keystone session"},{"line_number":30,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_4f602235","line":27,"in_reply_to":"1ae5cdf2_2b7f6a18","updated":"2014-06-19 17:42:17.000000000","message":"There will be opportunity to improve this code for sure. But the main goal right now is to get all the service to integrate with keystoneclient to get the latest functionality.","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"8c8387913ef62ad1a52ca58255968ebcd8f32761","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # TODO(fabgia): the heavy lifting here should be really done by Keystone."},{"line_number":25,"context_line":"    # Unfortunately Keystone does not support a richer method to perform"},{"line_number":26,"context_line":"    # discovery and return a single viable URL. A bug against Keystone has"},{"line_number":27,"context_line":"    # been filed: https://bugs.launchpad.net/pyhton-keystoneclient/+bug/1330677"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # first create a Keystone session"},{"line_number":30,"context_line":"    cacert \u003d kwargs.pop(\u0027cacert\u0027, None)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_2b7f6a18","line":27,"in_reply_to":"1ae5cdf2_ff503c0c","updated":"2014-06-19 00:04:12.000000000","message":"Chris, apparently this is the preferred way to interact with Keystone, using the client. Please have a look at a similar patch that has been recently approved: https://review.openstack.org/#/c/95305/\nAlso, I believe Jamie Lennox is championing the approach across Openstack.\nFabio","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1560f49d1263fb8d50de1129c11f8d5f298c3365","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"},{"line_number":34,"context_line":"    auth_url \u003d kwargs.pop(\u0027auth_url\u0027, None)"},{"line_number":35,"context_line":"    project_id \u003d kwargs.pop(\u0027project_id\u0027, None)"},{"line_number":36,"context_line":"    project_name \u003d kwargs.pop(\u0027project_name\u0027, None)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    if insecure:"},{"line_number":39,"context_line":"        verify \u003d False"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_69c6b94a","line":36,"updated":"2014-06-19 19:20:27.000000000","message":"(nit) i\u0027m not sure we need the None defaults considering when we build kwargs, they\u0027d default to None below","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"ad3477414bb4ad0ac2b6234eaa17ac53aa061cbb","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"},{"line_number":34,"context_line":"    auth_url \u003d kwargs.pop(\u0027auth_url\u0027, None)"},{"line_number":35,"context_line":"    project_id \u003d kwargs.pop(\u0027project_id\u0027, None)"},{"line_number":36,"context_line":"    project_name \u003d kwargs.pop(\u0027project_name\u0027, None)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    if insecure:"},{"line_number":39,"context_line":"        verify \u003d False"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_95f41d88","line":36,"in_reply_to":"1ae5cdf2_5542950f","updated":"2014-06-26 14:54:51.000000000","message":"Yes, because now you can use V2 or V3 I condense the tenant_id or tenant_name and project_id and project_name in two new variables that are project_name and project_id. do you follow me?","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"4e9d2bd859e73cc007d033d765c524ef74bd9e63","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"},{"line_number":34,"context_line":"    auth_url \u003d kwargs.pop(\u0027auth_url\u0027, None)"},{"line_number":35,"context_line":"    project_id \u003d kwargs.pop(\u0027project_id\u0027, None)"},{"line_number":36,"context_line":"    project_name \u003d kwargs.pop(\u0027project_name\u0027, None)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    if insecure:"},{"line_number":39,"context_line":"        verify \u003d False"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_ac7e0aad","line":36,"in_reply_to":"1ae5cdf2_69c6b94a","updated":"2014-06-19 22:21:54.000000000","message":"These are different from the one below. The one below are scoped within a particular domain and these are, in v2 money, tenant_id and tenant_name. Makes sense?","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"bdd3c6dd9e3583f056fc420d1269ddb7e6f6c363","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    insecure \u003d kwargs.pop(\u0027insecure\u0027, False)"},{"line_number":34,"context_line":"    auth_url \u003d kwargs.pop(\u0027auth_url\u0027, None)"},{"line_number":35,"context_line":"    project_id \u003d kwargs.pop(\u0027project_id\u0027, None)"},{"line_number":36,"context_line":"    project_name \u003d kwargs.pop(\u0027project_name\u0027, None)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    if insecure:"},{"line_number":39,"context_line":"        verify \u003d False"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_5542950f","line":36,"in_reply_to":"1ae5cdf2_ac7e0aad","updated":"2014-06-26 14:47:53.000000000","message":"i meant below as in when you actually create the kwargs (line ~193)\n\nnot important anyways","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1560f49d1263fb8d50de1129c11f8d5f298c3365","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        verify \u003d cacert or True"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    if cert and key:"},{"line_number":44,"context_line":"        # passing cert and key together is deprecated in favour of the"},{"line_number":45,"context_line":"        # requests lib form of having the cert and key as a tuple"},{"line_number":46,"context_line":"        cert \u003d (cert, key)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_49557d4e","line":44,"updated":"2014-06-19 19:20:27.000000000","message":"+1 for the queen\u0027s english.lol","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1560f49d1263fb8d50de1129c11f8d5f298c3365","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":198,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":199,"context_line":"        \u0027cert\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":200,"context_line":"        \u0027key\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":201,"context_line":"    }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_e962c9ab","line":200,"updated":"2014-06-19 19:20:27.000000000","message":"are cert_file and cert, key_file and key the same parameters?","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"4e9d2bd859e73cc007d033d765c524ef74bd9e63","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":198,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":199,"context_line":"        \u0027cert\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":200,"context_line":"        \u0027key\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":201,"context_line":"    }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_ecde5210","line":200,"in_reply_to":"1ae5cdf2_e962c9ab","updated":"2014-06-19 22:21:54.000000000","message":"the *_file are deprecated, but if used need to be kept separate for backward compatibility","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"91468002269f5b2da220c6454722752f74546d68","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            * os_auth_url: endpoint to authenticate against"},{"line_number":154,"context_line":"            * os_cacert: path of CA TLS certificate"},{"line_number":155,"context_line":"            * insecure: allow insecure SSL (no cert verification)"},{"line_number":156,"context_line":"            * os_tenant_{name|id}: name or ID of tenant"},{"line_number":157,"context_line":"    \"\"\""},{"line_number":158,"context_line":"    token \u003d kwargs.get(\u0027os_auth_token\u0027)"},{"line_number":159,"context_line":"    if token and not six.callable(token):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ae5cdf2_bf6cead1","line":156,"updated":"2014-06-24 17:22:04.000000000","message":"may want to update these to reflect reality when you have a chance","commit_id":"2414d43d4faec706a8fabc05b59688c8e555b20b"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"313ebcb00d3e481346b4a4c1a4a3e3039e422611","unresolved":false,"context_lines":[{"line_number":153,"context_line":"            * os_auth_url: endpoint to authenticate against"},{"line_number":154,"context_line":"            * os_cacert: path of CA TLS certificate"},{"line_number":155,"context_line":"            * insecure: allow insecure SSL (no cert verification)"},{"line_number":156,"context_line":"            * os_tenant_{name|id}: name or ID of tenant"},{"line_number":157,"context_line":"    \"\"\""},{"line_number":158,"context_line":"    token \u003d kwargs.get(\u0027os_auth_token\u0027)"},{"line_number":159,"context_line":"    if token and not six.callable(token):"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ae5cdf2_72ab2271","line":156,"in_reply_to":"1ae5cdf2_bf6cead1","updated":"2014-06-26 16:16:14.000000000","message":"Done","commit_id":"2414d43d4faec706a8fabc05b59688c8e555b20b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"91468002269f5b2da220c6454722752f74546d68","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":198,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":199,"context_line":"        \u0027cert\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":200,"context_line":"        \u0027key\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":201,"context_line":"    }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ae5cdf2_9f272eb5","line":200,"updated":"2014-06-24 17:22:04.000000000","message":"you don\u0027t need both set, just one","commit_id":"2414d43d4faec706a8fabc05b59688c8e555b20b"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"313ebcb00d3e481346b4a4c1a4a3e3039e422611","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027cert_file\u0027),"},{"line_number":198,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027key_file\u0027),"},{"line_number":199,"context_line":"        \u0027cert\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":200,"context_line":"        \u0027key\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":201,"context_line":"    }"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    return Client(api_version, endpoint, **cli_kwargs)"}],"source_content_type":"text/x-python","patch_set":19,"id":"1ae5cdf2_f2a732a6","line":200,"in_reply_to":"1ae5cdf2_9f272eb5","updated":"2014-06-26 16:16:14.000000000","message":"Done","commit_id":"2414d43d4faec706a8fabc05b59688c8e555b20b"},{"author":{"_account_id":9562,"name":"Ildiko Vancsa","email":"ildiko.vancsa@gmail.com","username":"ildikov"},"change_message_id":"717c28c9f41f35e5d5334a1434b043e1ff7e0257","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    else:"},{"line_number":120,"context_line":"        raise exc.CommandError(\u0027Unable to determine the Keystone version \u0027"},{"line_number":121,"context_line":"                               \u0027to authenticate with using the given \u0027"},{"line_number":122,"context_line":"                               \u0027auth_url.\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    ks_session.auth \u003d auth"},{"line_number":125,"context_line":"    return ks_session"}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_8ec88257","line":122,"updated":"2014-06-26 20:56:40.000000000","message":"It seems a bit odd to have almost the same error message in two places.","commit_id":"6082ae31ed260520079a58cb2f0e4d3b3915d7da"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"030220a2f552e7dab0c585d9752de5c0be8b876d","unresolved":false,"context_lines":[{"line_number":119,"context_line":"    else:"},{"line_number":120,"context_line":"        raise exc.CommandError(\u0027Unable to determine the Keystone version \u0027"},{"line_number":121,"context_line":"                               \u0027to authenticate with using the given \u0027"},{"line_number":122,"context_line":"                               \u0027auth_url.\u0027)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    ks_session.auth \u003d auth"},{"line_number":125,"context_line":"    return ks_session"}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_ecff32ff","line":122,"in_reply_to":"1ae5cdf2_8ec88257","updated":"2014-06-27 15:00:24.000000000","message":"Right, The issue is that the first is due to Keystone internal errors, the second is due to the fact that Keystone cannot evince the version from the provided URL. I guess that could be the case if you use something like http://host:5000/v2.5/auth","commit_id":"6082ae31ed260520079a58cb2f0e4d3b3915d7da"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1554522071be355e807d99dc1b22d1ff51d73bf5","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \u0027insecure\u0027: kwargs.get(\u0027insecure\u0027),"},{"line_number":204,"context_line":"        \u0027timeout\u0027: kwargs.get(\u0027timeout\u0027),"},{"line_number":205,"context_line":"        \u0027cacert\u0027: kwargs.get(\u0027os_cacert\u0027),"},{"line_number":206,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":207,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":208,"context_line":"    }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_d52140fd","line":206,"updated":"2014-06-26 16:46:14.000000000","message":"should this be kwargs.get(\u0027os_cert\u0027, kwargs.get(\u0027cert_file\u0027)) for backward compat?","commit_id":"6082ae31ed260520079a58cb2f0e4d3b3915d7da"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"e5706baf705e43ddc2a79df002c5a851481db524","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \u0027insecure\u0027: kwargs.get(\u0027insecure\u0027),"},{"line_number":204,"context_line":"        \u0027timeout\u0027: kwargs.get(\u0027timeout\u0027),"},{"line_number":205,"context_line":"        \u0027cacert\u0027: kwargs.get(\u0027os_cacert\u0027),"},{"line_number":206,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":207,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":208,"context_line":"    }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_d835f5db","line":206,"in_reply_to":"1ae5cdf2_d52140fd","updated":"2014-06-26 16:54:34.000000000","message":"Its already accounted for. See\n\nhttps://review.openstack.org/#/c/96323/21/ceilometerclient/shell.py\n\nline 179 and 183\n\ndest\u003d\u0027os_cert\u0027\n\nwhich basically means the \u0027os_cert\u0027 arg will be populated if user specify either \u0027--cert-file\u0027 or \u0027--os-cert\u0027 in CLI.","commit_id":"6082ae31ed260520079a58cb2f0e4d3b3915d7da"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"c63c8945b5bcaa66ca80be0caff1a7be30ffd229","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        \u0027insecure\u0027: kwargs.get(\u0027insecure\u0027),"},{"line_number":204,"context_line":"        \u0027timeout\u0027: kwargs.get(\u0027timeout\u0027),"},{"line_number":205,"context_line":"        \u0027cacert\u0027: kwargs.get(\u0027os_cacert\u0027),"},{"line_number":206,"context_line":"        \u0027cert_file\u0027: kwargs.get(\u0027os_cert\u0027),"},{"line_number":207,"context_line":"        \u0027key_file\u0027: kwargs.get(\u0027os_key\u0027)"},{"line_number":208,"context_line":"    }"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"1ae5cdf2_0e81d24c","line":206,"in_reply_to":"1ae5cdf2_d835f5db","updated":"2014-06-26 20:43:04.000000000","message":"cool cool.","commit_id":"6082ae31ed260520079a58cb2f0e4d3b3915d7da"}],"ceilometerclient/shell.py":[{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"66626644b124aabf95c5247ca6364f4772268fdd","unresolved":false,"context_lines":[{"line_number":136,"context_line":"        parser.add_argument(\u0027--os_region_name\u0027,"},{"line_number":137,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"        #Auth related options"},{"line_number":140,"context_line":"        parser.add_argument(\u0027--os-auth-url\u0027,"},{"line_number":141,"context_line":"                            default\u003dcliutils.env(\u0027OS_AUTH_URL\u0027),"},{"line_number":142,"context_line":"                            help\u003d\u0027Defaults to env[OS_AUTH_URL].\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_b0a29e98","line":139,"updated":"2014-05-30 00:49:13.000000000","message":"Space between # and Auth ... just throwing observations in case they get picked up once this review gets released into the wild.","commit_id":"1496ef36713b2b42eb648a576d5f2bfbf685802c"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"66626644b124aabf95c5247ca6364f4772268fdd","unresolved":false,"context_lines":[{"line_number":165,"context_line":"                            \u0027 This file can optionally be prepended with the\u0027"},{"line_number":166,"context_line":"                            \u0027 private key.\u0027)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # Deprecated options"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        parser.add_argument(\u0027--ca-file\u0027,"},{"line_number":171,"context_line":"                            dest\u003d\u0027os_cacert\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_f09ee662","line":168,"updated":"2014-05-30 00:49:13.000000000","message":"Should there be a Bug/BP to mark the deprecation of these CLI parameters?","commit_id":"1496ef36713b2b42eb648a576d5f2bfbf685802c"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"66626644b124aabf95c5247ca6364f4772268fdd","unresolved":false,"context_lines":[{"line_number":166,"context_line":"                            \u0027 private key.\u0027)"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"        # Deprecated options"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        parser.add_argument(\u0027--ca-file\u0027,"},{"line_number":171,"context_line":"                            dest\u003d\u0027os_cacert\u0027,"},{"line_number":172,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cacert.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_d0caca6d","line":169,"updated":"2014-05-30 00:49:13.000000000","message":"Is this new line required?","commit_id":"1496ef36713b2b42eb648a576d5f2bfbf685802c"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"66626644b124aabf95c5247ca6364f4772268fdd","unresolved":false,"context_lines":[{"line_number":339,"context_line":"            if not ((args.os_tenant_id or args.os_tenant_name) or "},{"line_number":340,"context_line":"                    (args.os_project_name and args.os_domain_is) or"},{"line_number":341,"context_line":"                    (args.os_project_id)):"},{"line_number":342,"context_line":"                # stir users towards Keystone V3 API"},{"line_number":343,"context_line":"                raise exc.CommandError(\"You must provide a project_id via \""},{"line_number":344,"context_line":"                                       \"either --os-project-id or via \""},{"line_number":345,"context_line":"                                       \"env[OS_PROJECT_ID]\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_b0e61e15","line":342,"updated":"2014-05-30 00:49:13.000000000","message":"# steer users ...","commit_id":"1496ef36713b2b42eb648a576d5f2bfbf685802c"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"49097ecacd4a32fce3db02d2b6e4f5a10eb62fca","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cert. Path of\u0027"},{"line_number":148,"context_line":"                            \u0027 certificate file to use in SSL connection.\u0027"},{"line_number":149,"context_line":"                            \u0027 This file can optionally be prepended with the\u0027"},{"line_number":150,"context_line":"                            \u0027 private key.\u0027)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def get_base_parser(self):"},{"line_number":153,"context_line":"        parser \u003d argparse.ArgumentParser("}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_d39f1864","line":150,"updated":"2014-06-16 17:30:56.000000000","message":"looks like \u0027--os-cert\u0027 and \u0027--os-key\u0027 are missing. Also, may want to add back \u0027--key-file\u0027 for backward compatibility.","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"b6230ece3f77b41e008b1626ba947c09ea62a78e","unresolved":false,"context_lines":[{"line_number":147,"context_line":"                            help\u003d\u0027DEPRECATED! Use --os-cert. Path of\u0027"},{"line_number":148,"context_line":"                            \u0027 certificate file to use in SSL connection.\u0027"},{"line_number":149,"context_line":"                            \u0027 This file can optionally be prepended with the\u0027"},{"line_number":150,"context_line":"                            \u0027 private key.\u0027)"},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def get_base_parser(self):"},{"line_number":153,"context_line":"        parser \u003d argparse.ArgumentParser("}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_f93a3397","line":150,"in_reply_to":"1ae5cdf2_d39f1864","updated":"2014-06-16 18:56:40.000000000","message":"Done","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"49097ecacd4a32fce3db02d2b6e4f5a10eb62fca","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        # Service Catalog related options"},{"line_number":203,"context_line":"        parser.add_argument(\u0027--os-service-type\u0027,"},{"line_number":204,"context_line":"                            default\u003dcliutils.env(\u0027OS_SERVICE_TYPE\u0027),"},{"line_number":205,"context_line":"                            help\u003d\u0027Defaults to env[OS_SERVICE_TYPE].\u0027)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_7390044f","line":203,"updated":"2014-06-16 17:30:56.000000000","message":"these belongs to identity args too","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"b6230ece3f77b41e008b1626ba947c09ea62a78e","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                            help\u003dargparse.SUPPRESS)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"        # Service Catalog related options"},{"line_number":203,"context_line":"        parser.add_argument(\u0027--os-service-type\u0027,"},{"line_number":204,"context_line":"                            default\u003dcliutils.env(\u0027OS_SERVICE_TYPE\u0027),"},{"line_number":205,"context_line":"                            help\u003d\u0027Defaults to env[OS_SERVICE_TYPE].\u0027)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_59c24787","line":203,"in_reply_to":"1ae5cdf2_7390044f","updated":"2014-06-16 18:56:40.000000000","message":"Done","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"49097ecacd4a32fce3db02d2b6e4f5a10eb62fca","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                                       \"either --os-password or via \""},{"line_number":321,"context_line":"                                       \"env[OS_PASSWORD]\")"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"            if not ((args.os_project_id and args.os_user_domain_name) or"},{"line_number":324,"context_line":"               (args.os_tenant_id or args.os_tenant_name)):"},{"line_number":325,"context_line":"                # steer users towards Keystone V3 API"},{"line_number":326,"context_line":"                raise exc.CommandError(\"You must provide a project_id via \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_13afc07e","line":323,"updated":"2014-06-16 17:30:56.000000000","message":"args.os_project_domain_name? Also, it is needed in conjunction with args.os_project_name only.","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"b6230ece3f77b41e008b1626ba947c09ea62a78e","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                                       \"either --os-password or via \""},{"line_number":321,"context_line":"                                       \"env[OS_PASSWORD]\")"},{"line_number":322,"context_line":""},{"line_number":323,"context_line":"            if not ((args.os_project_id and args.os_user_domain_name) or"},{"line_number":324,"context_line":"               (args.os_tenant_id or args.os_tenant_name)):"},{"line_number":325,"context_line":"                # steer users towards Keystone V3 API"},{"line_number":326,"context_line":"                raise exc.CommandError(\"You must provide a project_id via \""}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_88d63af0","line":323,"in_reply_to":"1ae5cdf2_13afc07e","updated":"2014-06-16 18:56:40.000000000","message":"Done","commit_id":"9ad3fd37059707330e45716dd094452343f14bef"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1560f49d1263fb8d50de1129c11f8d5f298c3365","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def _append_identity_args(self, parser):"},{"line_number":36,"context_line":"        # FIXME(fabgia): identity related parameters should be passed by the"},{"line_number":37,"context_line":"        # Keystone client itself to avoid constant update in all the services"},{"line_number":38,"context_line":"        # clients. When this fix is merged this method can be made obsolete."},{"line_number":39,"context_line":"        parser.add_argument(\u0027-k\u0027, \u0027--insecure\u0027,"},{"line_number":40,"context_line":"                            default\u003dFalse,"},{"line_number":41,"context_line":"                            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_a6bc70b6","line":38,"updated":"2014-06-19 19:20:27.000000000","message":"is there a bug/review we can track this with?","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"4e9d2bd859e73cc007d033d765c524ef74bd9e63","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    def _append_identity_args(self, parser):"},{"line_number":36,"context_line":"        # FIXME(fabgia): identity related parameters should be passed by the"},{"line_number":37,"context_line":"        # Keystone client itself to avoid constant update in all the services"},{"line_number":38,"context_line":"        # clients. When this fix is merged this method can be made obsolete."},{"line_number":39,"context_line":"        parser.add_argument(\u0027-k\u0027, \u0027--insecure\u0027,"},{"line_number":40,"context_line":"                            default\u003dFalse,"},{"line_number":41,"context_line":"                            action\u003d\u0027store_true\u0027,"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_8cf4ee87","line":38,"in_reply_to":"1ae5cdf2_a6bc70b6","updated":"2014-06-19 22:21:54.000000000","message":"There is one now:\nhttps://bugs.launchpad.net/python-keystoneclient/+bug/1332337","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"ace9ae9f66ac328ffa44174cb0edb14614054bca","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                                       \"either --os-password or via \""},{"line_number":333,"context_line":"                                       \"env[OS_PASSWORD]\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"            if not (args.os_project_id or (args.os_project_name and"},{"line_number":336,"context_line":"                    (args.os_user_domain_name or args.os_user_domain_id)) or"},{"line_number":337,"context_line":"                    (args.os_tenant_id or args.os_tenant_name)):"},{"line_number":338,"context_line":"                # steer users towards Keystone V3 API"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_e9263766","line":335,"updated":"2014-06-20 08:42:34.000000000","message":"Minor nit: This conditional is too long to easily reason about. Would it make any sense to extract it to a (very short) method with a good name?","commit_id":"23f9940025e2b796a73fa256f3fc8e993814b996"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"5241f54bea9eb740d5aba6af36320caf652bca2e","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                                       \"either --os-password or via \""},{"line_number":333,"context_line":"                                       \"env[OS_PASSWORD]\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"            if not (args.os_project_id or (args.os_project_name and"},{"line_number":336,"context_line":"                    (args.os_user_domain_name or args.os_user_domain_id)) or"},{"line_number":337,"context_line":"                    (args.os_tenant_id or args.os_tenant_name)):"},{"line_number":338,"context_line":"                # steer users towards Keystone V3 API"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_fc38733d","line":335,"in_reply_to":"1ae5cdf2_7557285b","updated":"2014-06-23 15:47:55.000000000","message":"Done","commit_id":"23f9940025e2b796a73fa256f3fc8e993814b996"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"a7c6fed1ced43311c4427de62f280161d7d3d497","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                                       \"either --os-password or via \""},{"line_number":333,"context_line":"                                       \"env[OS_PASSWORD]\")"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"            if not (args.os_project_id or (args.os_project_name and"},{"line_number":336,"context_line":"                    (args.os_user_domain_name or args.os_user_domain_id)) or"},{"line_number":337,"context_line":"                    (args.os_tenant_id or args.os_tenant_name)):"},{"line_number":338,"context_line":"                # steer users towards Keystone V3 API"}],"source_content_type":"text/x-python","patch_set":18,"id":"1ae5cdf2_7557285b","line":335,"in_reply_to":"1ae5cdf2_e9263766","updated":"2014-06-23 09:04:21.000000000","message":"yes, I guess it\u0027ll look better: smth like\n\nif no_project_and_domain_set(args)....","commit_id":"23f9940025e2b796a73fa256f3fc8e993814b996"}],"ceilometerclient/tests/test_shell.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1560f49d1263fb8d50de1129c11f8d5f298c3365","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        self.make_env(FAKE_V2_ENV)"},{"line_number":102,"context_line":"        args \u003d [\u0027--debug\u0027, \u0027event-list\u0027]"},{"line_number":103,"context_line":"        self.assertRaises(exc.HTTPUnauthorized, ceilometer_shell.main, args)"},{"line_number":104,"context_line":"        self.make_env(FAKE_V3_ENV)"},{"line_number":105,"context_line":"        self.assertRaises(exc.HTTPUnauthorized, ceilometer_shell.main, args)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @mock.patch.object(ks_session, \u0027Session\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_e9ed6926","line":104,"updated":"2014-06-19 19:20:27.000000000","message":"is it possible to makes these two separate tests? just so we can test v2 and v3 separately... maybe have two classes inheriting a base?","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"},{"author":{"_account_id":7052,"name":"Fabio Giannetti","email":"fgiannet@cisco.com","username":"fabgia"},"change_message_id":"4e9d2bd859e73cc007d033d765c524ef74bd9e63","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        self.make_env(FAKE_V2_ENV)"},{"line_number":102,"context_line":"        args \u003d [\u0027--debug\u0027, \u0027event-list\u0027]"},{"line_number":103,"context_line":"        self.assertRaises(exc.HTTPUnauthorized, ceilometer_shell.main, args)"},{"line_number":104,"context_line":"        self.make_env(FAKE_V3_ENV)"},{"line_number":105,"context_line":"        self.assertRaises(exc.HTTPUnauthorized, ceilometer_shell.main, args)"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"    @mock.patch.object(ks_session, \u0027Session\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"1ae5cdf2_ac2c4aad","line":104,"in_reply_to":"1ae5cdf2_e9ed6926","updated":"2014-06-19 22:21:54.000000000","message":"I\u0027ll have a look into it. But I think there will be more code than the 6 new lines I just added ...","commit_id":"dcf5fe20f590eb1df63a1e2df0af0f13de123a2d"}]}
