)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9147ed83d317aef733f23a77b9733a40183fdb0f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"We should not care about autentication, so it would be nice to move from"},{"line_number":10,"context_line":"novaclient.client.HTTPClient to novaclient.client.Session implementation."},{"line_number":11,"context_line":"Currently, there are several cases which are not covered by Session, so we"},{"line_number":12,"context_line":"cannot delete HTTPClient at all, but let\u0027s use Session object in all other"},{"line_number":13,"context_line":"cases."},{"line_number":14,"context_line":"Also it will help to support keystone V3."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":24,"id":"fa6399be_a55a8981","line":11,"updated":"2016-10-19 16:44:15.000000000","message":"(nit) many of the lines in here are too long and don\u0027t follow the OpenStack guidelines https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"1713c55ced6ca0d8ba099968b7d63100962a3f1c"}],"novaclient/client.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d42060abd6300343f02ed10fabffba432c9642af","unresolved":false,"context_lines":[{"line_number":695,"context_line":"    #   initialization."},{"line_number":696,"context_line":"    if not any((session, bypass_url, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":697,"context_line":"               not connection_pool, auth_plugin, auth_token)):"},{"line_number":698,"context_line":"        loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":699,"context_line":"        if not auth:"},{"line_number":700,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":701,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_ef4d6a73","line":698,"updated":"2016-04-18 16:19:21.000000000","message":"This could be moved inside the if block, no?","commit_id":"e59844fdd9531851c4a4e2999a81834f0c87cd1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"63867f30d92ef04fa5626a881f195d52be85bda1","unresolved":false,"context_lines":[{"line_number":695,"context_line":"    #   initialization."},{"line_number":696,"context_line":"    if not any((session, bypass_url, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":697,"context_line":"               not connection_pool, auth_plugin, auth_token)):"},{"line_number":698,"context_line":"        loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":699,"context_line":"        if not auth:"},{"line_number":700,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":701,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_2f0da290","line":698,"in_reply_to":"1a122d0e_ef4d6a73","updated":"2016-04-18 16:31:14.000000000","message":"Done","commit_id":"e59844fdd9531851c4a4e2999a81834f0c87cd1f"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d42060abd6300343f02ed10fabffba432c9642af","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        session \u003d ksession.Session(auth\u003dauth,"},{"line_number":707,"context_line":"                                   verify\u003d(not insecure),"},{"line_number":708,"context_line":"                                   timeout\u003dtimeout,"},{"line_number":709,"context_line":"                                   cert\u003dcacert,"},{"line_number":710,"context_line":"                                   user_agent\u003duser_agent)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    if session:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_ef260ab9","line":709,"range":{"start_line":709,"start_character":40,"end_line":709,"end_character":46},"updated":"2016-04-18 16:19:21.000000000","message":"From http://docs.openstack.org/developer/keystoneauth/api/keystoneauth1.html#keystoneauth1.session.Session it looks like `cacert` should be part of the `verify` kwarg, and `cert` should be used for client certificates.","commit_id":"e59844fdd9531851c4a4e2999a81834f0c87cd1f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"63867f30d92ef04fa5626a881f195d52be85bda1","unresolved":false,"context_lines":[{"line_number":706,"context_line":"        session \u003d ksession.Session(auth\u003dauth,"},{"line_number":707,"context_line":"                                   verify\u003d(not insecure),"},{"line_number":708,"context_line":"                                   timeout\u003dtimeout,"},{"line_number":709,"context_line":"                                   cert\u003dcacert,"},{"line_number":710,"context_line":"                                   user_agent\u003duser_agent)"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    if session:"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_8f731615","line":709,"range":{"start_line":709,"start_character":40,"end_line":709,"end_character":46},"in_reply_to":"1a122d0e_ef260ab9","updated":"2016-04-18 16:31:14.000000000","message":"will check it.","commit_id":"e59844fdd9531851c4a4e2999a81834f0c87cd1f"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"e463507e14f29297b9ce39f64f91ccdbf00e8fd9","unresolved":false,"context_lines":[{"line_number":693,"context_line":"                           interface\u003dNone, api_version\u003dNone, **kwargs):"},{"line_number":694,"context_line":"    # FIXME(andreykurilin): reduce number of parameters restricted for session"},{"line_number":695,"context_line":"    #   initialization."},{"line_number":696,"context_line":"    if not any((session, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":697,"context_line":"               not connection_pool, auth_plugin)):"},{"line_number":698,"context_line":"        if not auth and auth_token:"},{"line_number":699,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":700,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_251a2618","line":697,"range":{"start_line":696,"start_character":0,"end_line":697,"end_character":50},"updated":"2016-06-02 17:57:43.000000000","message":"++ for the FIXME. Maybe a auxiliar method to verify this make this code more readable.\n\nassert_any_restricted_parameters(...)","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"e463507e14f29297b9ce39f64f91ccdbf00e8fd9","unresolved":false,"context_lines":[{"line_number":697,"context_line":"               not connection_pool, auth_plugin)):"},{"line_number":698,"context_line":"        if not auth and auth_token:"},{"line_number":699,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":700,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"},{"line_number":701,"context_line":"                                            tenant_id\u003dtenant_id,"},{"line_number":702,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":703,"context_line":"                                            token\u003dauth_token)"},{"line_number":704,"context_line":"        elif not auth:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_0569e28b","line":701,"range":{"start_line":700,"start_character":44,"end_line":701,"end_character":64},"updated":"2016-06-02 17:57:43.000000000","message":"It\u0027s weird pass project_id and tenant_id since they have same value.","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"74132c08ede7320b7d8fd4aa77a084faf6ad3b81","unresolved":false,"context_lines":[{"line_number":697,"context_line":"               not connection_pool, auth_plugin)):"},{"line_number":698,"context_line":"        if not auth and auth_token:"},{"line_number":699,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":700,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"},{"line_number":701,"context_line":"                                            tenant_id\u003dtenant_id,"},{"line_number":702,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":703,"context_line":"                                            token\u003dauth_token)"},{"line_number":704,"context_line":"        elif not auth:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_99225200","line":701,"range":{"start_line":700,"start_character":44,"end_line":701,"end_character":64},"in_reply_to":"9abb7d3a_0569e28b","updated":"2016-06-02 21:01:59.000000000","message":"we have to pass both as we don\u0027t specify a plugin version, don\u0027t we? i also think that loader treats them differently...","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"e463507e14f29297b9ce39f64f91ccdbf00e8fd9","unresolved":false,"context_lines":[{"line_number":707,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":708,"context_line":"                                            user_id\u003duser_id,"},{"line_number":709,"context_line":"                                            password\u003dpassword,"},{"line_number":710,"context_line":"                                            project_id\u003dproject_id,"},{"line_number":711,"context_line":"                                            tenant_id\u003dtenant_id,"},{"line_number":712,"context_line":"                                            auth_url\u003dauth_url)"},{"line_number":713,"context_line":"        session \u003d ksession.Session(auth\u003dauth,"},{"line_number":714,"context_line":"                                   verify\u003d(not insecure),"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_45092add","line":711,"range":{"start_line":710,"start_character":0,"end_line":711,"end_character":64},"updated":"2016-06-02 17:57:43.000000000","message":"same here","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"17853a6841c08053f99d207806e256aa11152099","unresolved":false,"context_lines":[{"line_number":717,"context_line":"    # FIXME(andreykurilin): reduce number of parameters restricted for session"},{"line_number":718,"context_line":"    #   initialization."},{"line_number":719,"context_line":"    if not any((session, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":720,"context_line":"               not connection_pool, auth_plugin)):"},{"line_number":721,"context_line":"        if not auth and auth_token:"},{"line_number":722,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":723,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_86479e76","line":720,"range":{"start_line":720,"start_character":15,"end_line":720,"end_character":34},"updated":"2016-06-15 18:17:53.000000000","message":"why we only create a session if connection_pool\u003dTrue?","commit_id":"dc69799ab4f13359ea47d751c406303bfb1cc1c2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"fef3369cd038a47c4815eb1cd9542465affca561","unresolved":false,"context_lines":[{"line_number":717,"context_line":"    # FIXME(andreykurilin): reduce number of parameters restricted for session"},{"line_number":718,"context_line":"    #   initialization."},{"line_number":719,"context_line":"    if not any((session, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":720,"context_line":"               not connection_pool, auth_plugin)):"},{"line_number":721,"context_line":"        if not auth and auth_token:"},{"line_number":722,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":723,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_dbe75c10","line":720,"range":{"start_line":720,"start_character":15,"end_line":720,"end_character":34},"in_reply_to":"7aa08908_86479e76","updated":"2016-06-17 12:22:59.000000000","message":"good catch","commit_id":"dc69799ab4f13359ea47d751c406303bfb1cc1c2"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"66d631fc3585fd46d2002c26fe436df20ce39506","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"def _check_args_for_session(*args):"},{"line_number":705,"context_line":"    \"\"\"Returns `not any (args)`"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    This simple method was implemented to simplify testing process."},{"line_number":708,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_a23bc49b","line":705,"range":{"start_line":705,"start_character":7,"end_line":705,"end_character":31},"updated":"2016-06-20 17:12:20.000000000","message":"this should state what the function does, not the code itself.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e734e5b08c3bbd99767730aec678865fe7549436","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":""},{"line_number":704,"context_line":"def _check_args_for_session(*args):"},{"line_number":705,"context_line":"    \"\"\"Returns `not any (args)`"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    This simple method was implemented to simplify testing process."},{"line_number":708,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_ddf30e9d","line":705,"range":{"start_line":705,"start_character":7,"end_line":705,"end_character":31},"in_reply_to":"5a9d85d2_a23bc49b","updated":"2016-06-21 10:12:37.000000000","message":"Done","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7071672edd5dbc11b82ac8b2403964efa62015e1","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    #   initialization."},{"line_number":727,"context_line":"    if _check_args_for_session(session, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":728,"context_line":"                               connection_pool, auth_plugin):"},{"line_number":729,"context_line":"        # TODO(andreykurilin): implement wrapper for \u0027token\u0027 and \u0027password\u0027"},{"line_number":730,"context_line":"        #   plugins to be able to reload token plugin if \u0027password\u0027 plugin was"},{"line_number":731,"context_line":"        #   initialized."},{"line_number":732,"context_line":"        if not auth and auth_token:"},{"line_number":733,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":734,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_1b9c4469","line":731,"range":{"start_line":729,"start_character":8,"end_line":731,"end_character":24},"updated":"2016-06-17 12:23:59.000000000","message":"@Clenimar: are you interested in this task?:)","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e4d9d0fda11209a881d2066acff7782ee39aace0","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    #   initialization."},{"line_number":727,"context_line":"    if _check_args_for_session(session, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":728,"context_line":"                               connection_pool, auth_plugin):"},{"line_number":729,"context_line":"        # TODO(andreykurilin): implement wrapper for \u0027token\u0027 and \u0027password\u0027"},{"line_number":730,"context_line":"        #   plugins to be able to reload token plugin if \u0027password\u0027 plugin was"},{"line_number":731,"context_line":"        #   initialized."},{"line_number":732,"context_line":"        if not auth and auth_token:"},{"line_number":733,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":734,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_8ed16ed0","line":731,"range":{"start_line":729,"start_character":8,"end_line":731,"end_character":24},"in_reply_to":"5a9d85d2_eee4723c","updated":"2016-06-20 16:57:48.000000000","message":"use-case:\n- user pass both username, password and token;\n- use predefined token (via token plugin);\n- catch unauthorized when token expired and create new one via given username and password.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"cfcd5d21ce788137539c437c10113d32298f504b","unresolved":false,"context_lines":[{"line_number":726,"context_line":"    #   initialization."},{"line_number":727,"context_line":"    if _check_args_for_session(session, os_cache, proxy_tenant_id, proxy_token,"},{"line_number":728,"context_line":"                               connection_pool, auth_plugin):"},{"line_number":729,"context_line":"        # TODO(andreykurilin): implement wrapper for \u0027token\u0027 and \u0027password\u0027"},{"line_number":730,"context_line":"        #   plugins to be able to reload token plugin if \u0027password\u0027 plugin was"},{"line_number":731,"context_line":"        #   initialized."},{"line_number":732,"context_line":"        if not auth and auth_token:"},{"line_number":733,"context_line":"            loader \u003d loading.get_plugin_loader(\"token\")"},{"line_number":734,"context_line":"            auth \u003d loader.load_from_options(project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_eee4723c","line":731,"range":{"start_line":729,"start_character":8,"end_line":731,"end_character":24},"in_reply_to":"7aa08908_1b9c4469","updated":"2016-06-20 16:40:46.000000000","message":"hey Andrey, i didn\u0027t get why we need to deal with a token plugin if we\u0027ve have already got a password plugin :(\n\nyou mean trying to re-authenticate an expired token with password credentials passed in?","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9f5f58dcfdd9ee99d1a56c06a22f457376e70884","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":737,"context_line":"                                            token\u003dauth_token)"},{"line_number":738,"context_line":"        elif not auth:"},{"line_number":739,"context_line":"            loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":742,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_2af3260c","line":739,"range":{"start_line":739,"start_character":28,"end_line":739,"end_character":29},"updated":"2016-06-20 01:16:34.000000000","message":"Given that you know the plugin you want to use there\u0027s not much benefit going through the loading mechanism. Loading is mostly for things like describing available options and parsing from CLI. \n\nbut it doesn\u0027t hurt either.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e734e5b08c3bbd99767730aec678865fe7549436","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":737,"context_line":"                                            token\u003dauth_token)"},{"line_number":738,"context_line":"        elif not auth:"},{"line_number":739,"context_line":"            loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":742,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_1d2c7601","line":739,"range":{"start_line":739,"start_character":28,"end_line":739,"end_character":29},"in_reply_to":"5a9d85d2_2af3260c","updated":"2016-06-21 10:12:37.000000000","message":"Done","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e4d9d0fda11209a881d2066acff7782ee39aace0","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":737,"context_line":"                                            token\u003dauth_token)"},{"line_number":738,"context_line":"        elif not auth:"},{"line_number":739,"context_line":"            loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":742,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_a99384a2","line":739,"range":{"start_line":739,"start_character":28,"end_line":739,"end_character":29},"in_reply_to":"5a9d85d2_2af3260c","updated":"2016-06-20 16:57:48.000000000","message":"If I understood you correctly, I should use:\n\n    from keystoneauth1 import identity\n\n    identity.Password(username\u003dusername, user_id\u003duser_id, \n                      password\u003dpassword, project_id\u003dproject_id,\n                      tenant_id\u003dtenant_id, auth_url\u003dauth_url)\n\nAm I right? It will work for both v2 and v3?\n\n\u003e Loading is mostly for things like describing available options and parsing from CLI. \n\nlol. I found this code in CLI :)","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e734e5b08c3bbd99767730aec678865fe7549436","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":737,"context_line":"                                            token\u003dauth_token)"},{"line_number":738,"context_line":"        elif not auth:"},{"line_number":739,"context_line":"            loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":742,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_b3b632da","line":739,"range":{"start_line":739,"start_character":28,"end_line":739,"end_character":29},"in_reply_to":"5a9d85d2_44880723","updated":"2016-06-21 10:12:37.000000000","message":"Done","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"66d631fc3585fd46d2002c26fe436df20ce39506","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":737,"context_line":"                                            token\u003dauth_token)"},{"line_number":738,"context_line":"        elif not auth:"},{"line_number":739,"context_line":"            loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":742,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_44880723","line":739,"range":{"start_line":739,"start_character":28,"end_line":739,"end_character":29},"in_reply_to":"5a9d85d2_a99384a2","updated":"2016-06-20 17:12:20.000000000","message":"AFAIK using identity.Password(args...) would be correct here\n\nbut it looks like you\u0027re missing a few parameters, like project_name and domain info","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f36bb2bccad12c6f77d8d4e3de3b030950ce292c","unresolved":false,"context_lines":[{"line_number":736,"context_line":"                                            auth_url\u003dauth_url,"},{"line_number":737,"context_line":"                                            token\u003dauth_token)"},{"line_number":738,"context_line":"        elif not auth:"},{"line_number":739,"context_line":"            loader \u003d loading.get_plugin_loader(\"password\")"},{"line_number":740,"context_line":""},{"line_number":741,"context_line":"            auth \u003d loader.load_from_options(username\u003dusername,"},{"line_number":742,"context_line":"                                            user_id\u003duser_id,"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_9ba3829e","line":739,"range":{"start_line":739,"start_character":28,"end_line":739,"end_character":29},"in_reply_to":"5a9d85d2_b3b632da","updated":"2016-06-22 01:26:28.000000000","message":"You don\u0027t have to, just that it should result in the same thing without the loading abstraction so it\u0027s probably clearer to create it directly.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"cfcd5d21ce788137539c437c10113d32298f504b","unresolved":false,"context_lines":[{"line_number":762,"context_line":"                             api_version\u003dapi_version,"},{"line_number":763,"context_line":"                             endpoint_override\u003dbypass_url,"},{"line_number":764,"context_line":"                             **kwargs)"},{"line_number":765,"context_line":"    else:"},{"line_number":766,"context_line":"        # FIXME(jamielennox): username and password are now optional. Need"},{"line_number":767,"context_line":"        # to test that they were provided in this mode."},{"line_number":768,"context_line":"        logger \u003d kwargs.get(\u0027logger\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_535f3372","line":765,"range":{"start_line":765,"start_character":4,"end_line":765,"end_character":9},"updated":"2016-06-20 16:40:46.000000000","message":"what about logging a warning if httpclient is being returned? httpclient is not compatible with keystone v3 api...","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"a756c3d64638388dbda1cd511d3dfdc9d5e90e27","unresolved":false,"context_lines":[{"line_number":762,"context_line":"                             api_version\u003dapi_version,"},{"line_number":763,"context_line":"                             endpoint_override\u003dbypass_url,"},{"line_number":764,"context_line":"                             **kwargs)"},{"line_number":765,"context_line":"    else:"},{"line_number":766,"context_line":"        # FIXME(jamielennox): username and password are now optional. Need"},{"line_number":767,"context_line":"        # to test that they were provided in this mode."},{"line_number":768,"context_line":"        logger \u003d kwargs.get(\u0027logger\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_c9ced082","line":765,"range":{"start_line":765,"start_character":4,"end_line":765,"end_character":9},"in_reply_to":"5a9d85d2_535f3372","updated":"2016-06-20 17:00:16.000000000","message":"We can do it, but we should ensure that all use-cases which are not covered by session-way are needless","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c9613c48ba2c8b55b98fd92e2830be548960e489","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        #   plugins to be able to reload token plugin if \u0027password\u0027 plugin was"},{"line_number":741,"context_line":"        #   initialized."},{"line_number":742,"context_line":"        if not auth and auth_token:"},{"line_number":743,"context_line":"            auth \u003d identity.Token(project_id\u003dproject_id,"},{"line_number":744,"context_line":"                                  tenant_id\u003dproject_id,"},{"line_number":745,"context_line":"                                  auth_url\u003dauth_url,"},{"line_number":746,"context_line":"                                  token\u003dauth_token)"},{"line_number":747,"context_line":"        elif not auth:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_6c30579f","line":744,"range":{"start_line":743,"start_character":34,"end_line":744,"end_character":54},"updated":"2016-06-21 14:11:32.000000000","message":"you don\u0027t need to pass the project or tenant if you are using a token","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"9d7498fadc7c28b86ddad1f3d58ab24c250e4f8f","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        #   plugins to be able to reload token plugin if \u0027password\u0027 plugin was"},{"line_number":741,"context_line":"        #   initialized."},{"line_number":742,"context_line":"        if not auth and auth_token:"},{"line_number":743,"context_line":"            auth \u003d identity.Token(project_id\u003dproject_id,"},{"line_number":744,"context_line":"                                  tenant_id\u003dproject_id,"},{"line_number":745,"context_line":"                                  auth_url\u003dauth_url,"},{"line_number":746,"context_line":"                                  token\u003dauth_token)"},{"line_number":747,"context_line":"        elif not auth:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_0c0ef33a","line":744,"range":{"start_line":743,"start_character":34,"end_line":744,"end_character":54},"in_reply_to":"5a9d85d2_6c30579f","updated":"2016-06-21 14:20:35.000000000","message":"got it, will remove","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"c9613c48ba2c8b55b98fd92e2830be548960e489","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                                     user_id\u003duser_id,"},{"line_number":750,"context_line":"                                     password\u003dpassword,"},{"line_number":751,"context_line":"                                     project_id\u003dproject_id,"},{"line_number":752,"context_line":"                                     tenant_id\u003dproject_id,"},{"line_number":753,"context_line":"                                     auth_url\u003dauth_url,"},{"line_number":754,"context_line":"                                     project_domain_id\u003dproject_domain_id,"},{"line_number":755,"context_line":"                                     project_domain_name\u003dproject_domain_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_8cd4a320","line":752,"range":{"start_line":752,"start_character":37,"end_line":752,"end_character":57},"updated":"2016-06-21 14:11:32.000000000","message":"since you set project_id \u003d tenant_id or project_id, then there is no need to also pass in tenant_id","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"9d7498fadc7c28b86ddad1f3d58ab24c250e4f8f","unresolved":false,"context_lines":[{"line_number":749,"context_line":"                                     user_id\u003duser_id,"},{"line_number":750,"context_line":"                                     password\u003dpassword,"},{"line_number":751,"context_line":"                                     project_id\u003dproject_id,"},{"line_number":752,"context_line":"                                     tenant_id\u003dproject_id,"},{"line_number":753,"context_line":"                                     auth_url\u003dauth_url,"},{"line_number":754,"context_line":"                                     project_domain_id\u003dproject_domain_id,"},{"line_number":755,"context_line":"                                     project_domain_name\u003dproject_domain_name,"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_6ccb371f","line":752,"range":{"start_line":752,"start_character":37,"end_line":752,"end_character":57},"in_reply_to":"5a9d85d2_8cd4a320","updated":"2016-06-21 14:20:35.000000000","message":"You will be surprised, but project_id variable has another meaning than id of project. lol. see [1]\n\nso L739 is a compatibility layer for those how did not know what project_id means. I suppose, it will be fixed here [2]\n\nBut it doesn\u0027t matter, since we merge tenant_id and project_id in cli layer [3]. So setting only project_id will work for both keystone v2 and v3. Right?\n\n[1] - https://github.com/openstack/python-novaclient/blob/4.1.0/novaclient/v2/client.py#L120-L124\n[2] - https://review.openstack.org/#/c/332117\n[3] - https://github.com/openstack/python-novaclient/blob/4.1.0/novaclient/shell.py#L759-L760","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":15742,"name":"Paulo Ewerton Gomes Fragoso","email":"pauloewerton@lsd.ufcg.edu.br","username":"pauloewerton"},"change_message_id":"54865914e43aa783753e4e82631586c3875c236d","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                      \"arguments. Note that this will become an error in \""},{"line_number":930,"context_line":"                      \"Ocata.\")"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"interface\","},{"line_number":933,"context_line":"                              right_name\u003d\"endpoint_type\", release\u003d\"Newton\")"},{"line_number":934,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"bypass_url\","},{"line_number":935,"context_line":"                              right_name\u003d\"endpoint_override\", release\u003d\"Newton\")"},{"line_number":936,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_6616b9f2","line":933,"range":{"start_line":932,"start_character":38,"end_line":933,"end_character":57},"updated":"2016-06-21 13:38:07.000000000","message":"these two are switched","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":15742,"name":"Paulo Ewerton Gomes Fragoso","email":"pauloewerton@lsd.ufcg.edu.br","username":"pauloewerton"},"change_message_id":"e6503a0a347030c2f5747a33dffe055a381f9183","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                      \"arguments. Note that this will become an error in \""},{"line_number":930,"context_line":"                      \"Ocata.\")"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"interface\","},{"line_number":933,"context_line":"                              right_name\u003d\"endpoint_type\", release\u003d\"Newton\")"},{"line_number":934,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"bypass_url\","},{"line_number":935,"context_line":"                              right_name\u003d\"endpoint_override\", release\u003d\"Newton\")"},{"line_number":936,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_8c2ca303","line":933,"range":{"start_line":932,"start_character":38,"end_line":933,"end_character":57},"in_reply_to":"5a9d85d2_49c0ed7b","updated":"2016-06-21 14:15:53.000000000","message":"hmm, the ksc to ksa migration guide states that \"endpoint_type parameter was changed to interface\" http://docs.openstack.org/developer/keystoneauth/migrating.html#step-by-step-migration-example\n\nanyway I don\u0027t see a problem with using endpoint_type either","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7cac3ee5b5ba787a071b1ff540c930a0d5f0480e","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                      \"arguments. Note that this will become an error in \""},{"line_number":930,"context_line":"                      \"Ocata.\")"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"interface\","},{"line_number":933,"context_line":"                              right_name\u003d\"endpoint_type\", release\u003d\"Newton\")"},{"line_number":934,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"bypass_url\","},{"line_number":935,"context_line":"                              right_name\u003d\"endpoint_override\", release\u003d\"Newton\")"},{"line_number":936,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_49c0ed7b","line":933,"range":{"start_line":932,"start_character":38,"end_line":933,"end_character":57},"in_reply_to":"5a9d85d2_6616b9f2","updated":"2016-06-21 13:56:24.000000000","message":"no, everything is ok. interface is a deprecated name, endpoint_type is the right one, since most of clients use it.","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"7a5e61b97dde3bedf4cc2265245990862cdf6014","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                      \"arguments. Note that this will become an error in \""},{"line_number":930,"context_line":"                      \"Ocata.\")"},{"line_number":931,"context_line":""},{"line_number":932,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"interface\","},{"line_number":933,"context_line":"                              right_name\u003d\"endpoint_type\", release\u003d\"Newton\")"},{"line_number":934,"context_line":"    _check_rename_of_argument(kwargs, deprecated_name\u003d\"bypass_url\","},{"line_number":935,"context_line":"                              right_name\u003d\"endpoint_override\", release\u003d\"Newton\")"},{"line_number":936,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a9d85d2_4fc0ed7b","line":933,"range":{"start_line":932,"start_character":38,"end_line":933,"end_character":57},"in_reply_to":"5a9d85d2_8c2ca303","updated":"2016-06-21 14:25:19.000000000","message":"Ok. Basically, it doesn\u0027t matter for me what name of argument should be used. The main idea of this change was usage of one argument instead of two:)\n\nLet\u0027s start a discussion what argument is a preferable.","commit_id":"063dae781547590555849b64770dabd618880270"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"22e04b3a8089e95b96c93d77a6a64cd64305ba53","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                           connection_pool\u003dFalse, session\u003dNone, auth\u003dNone,"},{"line_number":723,"context_line":"                           user_agent\u003d\u0027python-novaclient\u0027, api_version\u003dNone,"},{"line_number":724,"context_line":"                           project_domain_id\u003dNone, project_domain_name\u003dNone,"},{"line_number":725,"context_line":"                           user_domain_id\u003dNone, user_domain_name\u003dNone,"},{"line_number":726,"context_line":"                           **kwargs):"},{"line_number":727,"context_line":"    # FIXME(andreykurilin): reduce number of parameters restricted for session"},{"line_number":728,"context_line":"    #   initialization."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_3b11aead","line":725,"range":{"start_line":725,"start_character":27,"end_line":725,"end_character":41},"updated":"2016-06-22 01:37:35.000000000","message":"adding these extra parameters depends on your goal. \n\nYou can\u0027t do v3 auth without them, but i\u0027ve always maintained if you want v3 auth you should create the session yourself rather than expect novaclient to keep up with all the arguments.\n\nThis can be done by just moving the session creation into shell rather that trying to do it in client. Remember that anyone using novaclient directly (heat, OSC, etc) is affected by these but you can do whatever works in shell.py.","commit_id":"264906bc39743394027b03f0479f4dbae3aa9cd0"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5ae1a8b892ff439c855879c4ae0c58e0778f9adf","unresolved":false,"context_lines":[{"line_number":722,"context_line":"                           connection_pool\u003dFalse, session\u003dNone, auth\u003dNone,"},{"line_number":723,"context_line":"                           user_agent\u003d\u0027python-novaclient\u0027, api_version\u003dNone,"},{"line_number":724,"context_line":"                           project_domain_id\u003dNone, project_domain_name\u003dNone,"},{"line_number":725,"context_line":"                           user_domain_id\u003dNone, user_domain_name\u003dNone,"},{"line_number":726,"context_line":"                           **kwargs):"},{"line_number":727,"context_line":"    # FIXME(andreykurilin): reduce number of parameters restricted for session"},{"line_number":728,"context_line":"    #   initialization."}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_10875d62","line":725,"range":{"start_line":725,"start_character":27,"end_line":725,"end_character":41},"in_reply_to":"3aaa91ec_3b11aead","updated":"2016-06-22 09:00:42.000000000","message":"\u003eYou can\u0027t do v3 auth without them, but i\u0027ve always maintained if you want v3 auth you should create the session yourself\n\nimo, we should provide the same way to use novaclient with keystone v2 and v3.\n\n\u003eThis can be done by just moving the session creation into shell rather that trying to do it in client. \n\nit is long change(deprecation period and fixing a lot of projects). Also I do not understand why we should reduce the scope of novaclient.client and move creation of session complitly to shell. It is not user-friendly. If we start creating session, let\u0027s allow to do it everywhere.\n\n\u003eRemember that anyone using novaclient directly (heat, OSC, etc) is affected by these but you can do whatever works in shell.py.\n\nwe have novaclient.client.Client entry-point. It is designed with backward compatible layer. Based of results of http://codesearch.openstack.org , this change should not break anything.","commit_id":"264906bc39743394027b03f0479f4dbae3aa9cd0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22d234148c935bbbf594a2cce82cc5c81cbeee43","unresolved":false,"context_lines":[{"line_number":886,"context_line":"                \"arguments. Value of \u0027%(new)s\u0027 is preferable and \u0027%(old)s\u0027 is \""},{"line_number":887,"context_line":"                \"deprecated since %(release)s and may be ignored in further \""},{"line_number":888,"context_line":"                \"releases.\" % {\"old\": deprecated_name, \"new\": right_name,"},{"line_number":889,"context_line":"                               \"release\": release})"},{"line_number":890,"context_line":"            kwargs.pop(deprecated_name)"},{"line_number":891,"context_line":"        else:"},{"line_number":892,"context_line":"            warnings.warn("}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_0922d7a2","line":889,"updated":"2016-07-07 16:05:19.000000000","message":"Suggested rewording: \"The \u0027%(old)s\u0027 argument is deprecated since %(release)s, and its use may result in errors in future releases.  As \u0027%(new)s\u0027 is provided, the \u0027%(old)s\u0027 argument will be ignored.\"","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"ef478740582e13525997b3215c5bcecde76b8cdc","unresolved":false,"context_lines":[{"line_number":886,"context_line":"                \"arguments. Value of \u0027%(new)s\u0027 is preferable and \u0027%(old)s\u0027 is \""},{"line_number":887,"context_line":"                \"deprecated since %(release)s and may be ignored in further \""},{"line_number":888,"context_line":"                \"releases.\" % {\"old\": deprecated_name, \"new\": right_name,"},{"line_number":889,"context_line":"                               \"release\": release})"},{"line_number":890,"context_line":"            kwargs.pop(deprecated_name)"},{"line_number":891,"context_line":"        else:"},{"line_number":892,"context_line":"            warnings.warn("}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_cdff70ff","line":889,"in_reply_to":"1aa78d24_0922d7a2","updated":"2016-07-26 21:04:18.000000000","message":"Done","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22d234148c935bbbf594a2cce82cc5c81cbeee43","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                \"\u0027%(old)s\u0027 argument is deprecated since %(release)s and may be\""},{"line_number":894,"context_line":"                \" ignored in further releases. Use \u0027%(new)s\u0027 instead.\" % {"},{"line_number":895,"context_line":"                    \"old\": deprecated_name, \"new\": right_name,"},{"line_number":896,"context_line":"                    \"release\": release})"},{"line_number":897,"context_line":"            kwargs[right_name] \u003d kwargs.pop(deprecated_name)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_89e1a72c","line":896,"updated":"2016-07-07 16:05:19.000000000","message":"Suggested rewording: \"The \u0027%(old)s\u0027 argument is deprecated since %(release)s, and its use may result in errors in future releases.  Use \u0027%(new)s\u0027 instead.\"\n\nNote in particular that I\u0027m suggesting that using the old argument may result in errors in the future, rather than just being ignored; my feeling is that we should actually actively raise errors for deprecated arguments that have been removed, for at least a cycle, even in cases where the method will accept arbitrary arguments (like the Client method below).","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"ef478740582e13525997b3215c5bcecde76b8cdc","unresolved":false,"context_lines":[{"line_number":893,"context_line":"                \"\u0027%(old)s\u0027 argument is deprecated since %(release)s and may be\""},{"line_number":894,"context_line":"                \" ignored in further releases. Use \u0027%(new)s\u0027 instead.\" % {"},{"line_number":895,"context_line":"                    \"old\": deprecated_name, \"new\": right_name,"},{"line_number":896,"context_line":"                    \"release\": release})"},{"line_number":897,"context_line":"            kwargs[right_name] \u003d kwargs.pop(deprecated_name)"},{"line_number":898,"context_line":""},{"line_number":899,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_ed21949f","line":896,"in_reply_to":"1aa78d24_89e1a72c","updated":"2016-07-26 21:04:18.000000000","message":"Done","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"eab23e001f66a6690a03af8cffa316a4f7c0b0b2","unresolved":false,"context_lines":[{"line_number":753,"context_line":"            auth \u003d identity.Token(auth_url\u003dauth_url,"},{"line_number":754,"context_line":"                                  token\u003dauth_token)"},{"line_number":755,"context_line":"        elif not auth:"},{"line_number":756,"context_line":"            auth \u003d identity.Password(username\u003dusername,"},{"line_number":757,"context_line":"                                     user_id\u003duser_id,"},{"line_number":758,"context_line":"                                     password\u003dpassword,"},{"line_number":759,"context_line":"                                     project_id\u003dproject_id,"}],"source_content_type":"text/x-python","patch_set":17,"id":"9ad45d7e_8ff6d98c","line":756,"updated":"2016-08-11 20:06:07.000000000","message":"Instead of touching identity.Password directly:\n\nfrom keystoneauth1 import loading\nloader \u003d loading.get_plugin_loader(\u0027password\u0027)\nauth \u003d loader.load_from_options(","commit_id":"dcddce4d1ef66aae7201da45be7c146290f5e9c8"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"d5fa8d54232b4acc4d9a02d055eb45bd504787e1","unresolved":false,"context_lines":[{"line_number":766,"context_line":"                                   verify\u003d(cacert or not insecure),"},{"line_number":767,"context_line":"                                   timeout\u003dtimeout,"},{"line_number":768,"context_line":"                                   cert\u003dcert,"},{"line_number":769,"context_line":"                                   user_agent\u003duser_agent)"},{"line_number":770,"context_line":""},{"line_number":771,"context_line":"    if session:"},{"line_number":772,"context_line":"        return SessionClient(session\u003dsession,"}],"source_content_type":"text/x-python","patch_set":18,"id":"3a98d1f4_23117e04","line":769,"range":{"start_line":769,"start_character":35,"end_line":769,"end_character":45},"updated":"2016-10-04 06:01:54.000000000","message":"when i originally did these i was specific to not put session building here. Whilst it is people have no incentive to actually upgrade their code and use session properly. \n\nI am fine with it going into the cli.py but are we sure we want to do it here rather than a big fat \"pass a session\" deprecation warning?","commit_id":"51e2600d1df2168811cc66dc2583abb57e4603f1"}],"novaclient/tests/unit/fixture_data/servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"bb8810aa65383d6ee083a50adda2504efe6d229a","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                   headers\u003dself.json_headers)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        def put_server_tag(request, context):"},{"line_number":344,"context_line":"            assert request.text is None"},{"line_number":345,"context_line":"            context.status_code \u003d 201"},{"line_number":346,"context_line":"            return None"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_e7e427a9","line":344,"updated":"2016-06-17 18:26:17.000000000","message":"This doesn\u0027t look related.  Do you have a bad rebase?","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"41f74bbefe98ad3f32725e42c6d998f2bca78aa1","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                   headers\u003dself.json_headers)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        def put_server_tag(request, context):"},{"line_number":344,"context_line":"            assert request.text is None"},{"line_number":345,"context_line":"            context.status_code \u003d 201"},{"line_number":346,"context_line":"            return None"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_10d87a52","line":344,"in_reply_to":"7aa08908_116ecaff","updated":"2016-06-18 13:42:56.000000000","message":"Odd.  The test appears to expect that body will be the valid JSON text \"null\"; not sure why we\u0027d send something like that.  Maybe the recent tags-related change highlighted the test suite bug?  But then, why wouldn\u0027t the tests on that change have failed?\n\n*shrug*","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"db6fa0a8449e1b6537feb7f752df648986c664cf","unresolved":false,"context_lines":[{"line_number":341,"context_line":"                                   headers\u003dself.json_headers)"},{"line_number":342,"context_line":""},{"line_number":343,"context_line":"        def put_server_tag(request, context):"},{"line_number":344,"context_line":"            assert request.text is None"},{"line_number":345,"context_line":"            context.status_code \u003d 201"},{"line_number":346,"context_line":"            return None"},{"line_number":347,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_116ecaff","line":344,"in_reply_to":"7aa08908_e7e427a9","updated":"2016-06-17 22:21:50.000000000","message":"no. actually, I do not know why it works before:\n\n    json.loads(\"\") -\u003e ValueError: No JSON object could be decoded\n    json.loads(None) -\u003e TypeError: expected string or buffer\n    json.loads(\"{}\") -\u003e {}  \n\nI do not case, when json.loads returns None. After my change, one test started fail, so I fix it with correct check.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"}],"novaclient/tests/unit/test_client.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"e463507e14f29297b9ce39f64f91ccdbf00e8fd9","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # use http_log_debug to test HTTPClient"},{"line_number":182,"context_line":"        cs \u003d novaclient.client.Client(\"2\", \"user\", \"password\", \"project_id\","},{"line_number":183,"context_line":"                                      auth_url\u003d\"foo/v2\", os_cache\u003dFalse,"},{"line_number":184,"context_line":"                                      http_log_debug\u003dTrue)"},{"line_number":185,"context_line":"        self.assertFalse(cs.os_cache)"},{"line_number":186,"context_line":"        self.assertFalse(cs.client.os_cache)"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_c59fda4e","line":184,"updated":"2016-06-02 17:57:43.000000000","message":"Why we need to use http_log_debug for this cases?","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"409f2f2b614359b2f987327fa4a3893684e11c6b","unresolved":false,"context_lines":[{"line_number":181,"context_line":"        # use http_log_debug to test HTTPClient"},{"line_number":182,"context_line":"        cs \u003d novaclient.client.Client(\"2\", \"user\", \"password\", \"project_id\","},{"line_number":183,"context_line":"                                      auth_url\u003d\"foo/v2\", os_cache\u003dFalse,"},{"line_number":184,"context_line":"                                      http_log_debug\u003dTrue)"},{"line_number":185,"context_line":"        self.assertFalse(cs.os_cache)"},{"line_number":186,"context_line":"        self.assertFalse(cs.client.os_cache)"},{"line_number":187,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_60cffcb3","line":184,"in_reply_to":"9abb7d3a_c59fda4e","updated":"2016-06-02 18:06:53.000000000","message":"In previous patch-set, this parameter was restricted for creating session object, so I used it to create HTTPClient","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"4b2914cfdf8e43b3171eaac31a395bea2d5dc674","unresolved":false,"context_lines":[{"line_number":29,"context_line":"import novaclient.v2.client"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def init_nc_with_httpclient(*args, **kwargs):"},{"line_number":33,"context_line":"    \"\"\"Initializes novaclient v2 client instance with HTTPClient.\"\"\""},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    with mock.patch(\"novaclient.client._check_args_for_session\","}],"source_content_type":"text/x-python","patch_set":13,"id":"dada55a8_9873ef7f","line":32,"updated":"2016-07-26 21:29:12.000000000","message":"Should use the one you put in utils…","commit_id":"45ae5298f79df7d394a942b2d677719863622174"}],"novaclient/tests/unit/v2/test_auth.py":[{"author":{"_account_id":8866,"name":"Raildo Mascena de Sousa Filho","email":"rmascena@redhat.com","username":"raildo"},"change_message_id":"e463507e14f29297b9ce39f64f91ccdbf00e8fd9","unresolved":false,"context_lines":[{"line_number":27,"context_line":"    \"\"\"Initializes novaclient v2 client instance with HTTPClient.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    # http_log_debug is restricted for Session now."},{"line_number":30,"context_line":"    kwargs[\"http_log_debug\"] \u003d True"},{"line_number":31,"context_line":"    return client.Client(\"2\", *args, **kwargs)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_8502f26d","line":30,"updated":"2016-06-02 17:57:43.000000000","message":"I didn\u0027t get the http_log_debug necessity here...","commit_id":"f5fabb61b8d7df5dcc74c1f7064446b2ff1e58c8"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22d234148c935bbbf594a2cce82cc5c81cbeee43","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from novaclient.tests.unit import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def init_nc_with_httpclient(*args, **kwargs):"},{"line_number":27,"context_line":"    \"\"\"Initializes novaclient v2 client instance with HTTPClient.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    with mock.patch(\"novaclient.client._check_args_for_session\","}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_69239b56","line":26,"updated":"2016-07-07 16:05:19.000000000","message":"Is there some other place we could put this, so we\u0027re not duplicating the code?  Maybe novaclient.tests.unit.utils would be a good place to put it…","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"ef478740582e13525997b3215c5bcecde76b8cdc","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from novaclient.tests.unit import utils"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"def init_nc_with_httpclient(*args, **kwargs):"},{"line_number":27,"context_line":"    \"\"\"Initializes novaclient v2 client instance with HTTPClient.\"\"\""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    with mock.patch(\"novaclient.client._check_args_for_session\","}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_ad095c97","line":26,"in_reply_to":"1aa78d24_69239b56","updated":"2016-07-26 21:04:18.000000000","message":"Done","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"c090e9f5203ab91bbe2a452b9c1825bb9b7b4fdc","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(AuthenticateAgainstKeystoneTests, self).setUp()"},{"line_number":34,"context_line":"        self.skipTest(\"This TestCase checks deprecated authentication \""},{"line_number":35,"context_line":"                      \"methods, which will be removed in separate patch.\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_token(self, **kwargs):"},{"line_number":38,"context_line":"        resp \u003d fixture.V2Token(**kwargs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a71b18c_ab935df9","line":35,"updated":"2016-12-08 16:39:45.000000000","message":"This is new.  If these tests aren\u0027t going to pass, I\u0027d almost rather that they and the authentication methods be eliminated together, rather than adding code that just disables the tests…","commit_id":"7a817ab6d141abdaa4f0ed81ea00e5d8d8a1c46f"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"5098d55bb766f444ab64d10927afe2a7fd6dfe57","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    def setUp(self):"},{"line_number":33,"context_line":"        super(AuthenticateAgainstKeystoneTests, self).setUp()"},{"line_number":34,"context_line":"        self.skipTest(\"This TestCase checks deprecated authentication \""},{"line_number":35,"context_line":"                      \"methods, which will be removed in separate patch.\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_token(self, **kwargs):"},{"line_number":38,"context_line":"        resp \u003d fixture.V2Token(**kwargs)"}],"source_content_type":"text/x-python","patch_set":26,"id":"3a71b18c_d11be6c8","line":35,"in_reply_to":"3a71b18c_ab935df9","updated":"2016-12-08 17:15:57.000000000","message":"I want to make all patches as small as possible to simplify reviewing (I posted first first patch-set 8 or 9 months ago and I hope the work will be finished soon). All this tests will be removed in next patch(I\u0027ll send it in a minute)","commit_id":"7a817ab6d141abdaa4f0ed81ea00e5d8d8a1c46f"}],"novaclient/tests/unit/v2/test_client.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"9f5f58dcfdd9ee99d1a56c06a22f457376e70884","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        s \u003d session.Session()"},{"line_number":29,"context_line":"        c \u003d client.Client(session\u003ds,"},{"line_number":30,"context_line":"                          user_agent\u003duser_agent,"},{"line_number":31,"context_line":"                          bypass_url\u003dendpoint_override,"},{"line_number":32,"context_line":"                          direct_use\u003dFalse)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        self.assertEqual(user_agent, c.client.user_agent)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_ea363eb3","line":31,"range":{"start_line":31,"start_character":37,"end_line":31,"end_character":54},"updated":"2016-06-20 01:16:34.000000000","message":"so endpoint_override is a common name used by all clients (or all that are passing options to the adapter)","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e734e5b08c3bbd99767730aec678865fe7549436","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        s \u003d session.Session()"},{"line_number":29,"context_line":"        c \u003d client.Client(session\u003ds,"},{"line_number":30,"context_line":"                          user_agent\u003duser_agent,"},{"line_number":31,"context_line":"                          bypass_url\u003dendpoint_override,"},{"line_number":32,"context_line":"                          direct_use\u003dFalse)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        self.assertEqual(user_agent, c.client.user_agent)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_d6e00cfd","line":31,"range":{"start_line":31,"start_character":37,"end_line":31,"end_character":54},"in_reply_to":"5a9d85d2_ea363eb3","updated":"2016-06-21 10:12:37.000000000","message":"since I already started to modify an interface of novaclient.client.Client, I\u0027ll rename this argument too.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e4d9d0fda11209a881d2066acff7782ee39aace0","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        s \u003d session.Session()"},{"line_number":29,"context_line":"        c \u003d client.Client(session\u003ds,"},{"line_number":30,"context_line":"                          user_agent\u003duser_agent,"},{"line_number":31,"context_line":"                          bypass_url\u003dendpoint_override,"},{"line_number":32,"context_line":"                          direct_use\u003dFalse)"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"        self.assertEqual(user_agent, c.client.user_agent)"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_4a230906","line":31,"range":{"start_line":31,"start_character":37,"end_line":31,"end_character":54},"in_reply_to":"5a9d85d2_ea363eb3","updated":"2016-06-20 16:57:48.000000000","message":"yeah, I know it, but it would be easier to precess the rename in separate smaller patch which the right deprecation and compatibility layer.\n\nI changed L31 just to use the correct argument of novaclient\u0027s interface.","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"}],"novaclient/tests/unit/v2/test_servers.py":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22d234148c935bbbf594a2cce82cc5c81cbeee43","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        super(ServersTest, self).setUp()"},{"line_number":41,"context_line":"        self.useFixture(floatingips.FloatingFixture(self.requests))"},{"line_number":42,"context_line":"        if self.api_version:"},{"line_number":43,"context_line":"            self.cs.api_version \u003d api_versions.APIVersion(self.api_version)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_list_servers(self):"},{"line_number":46,"context_line":"        sl \u003d self.cs.servers.list()"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_a9daa314","line":43,"updated":"2016-07-07 16:05:19.000000000","message":"This is a nice change, but is it really related to this patch?  I\u0027d vote to pull this out into a separate review, unless there\u0027s some good reason to have it here.\n\n(For that matter, I wonder if this could be folded into novaclient.tests.unit.utils.FixturedTestCase…or one of its superclasses?)","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"ef478740582e13525997b3215c5bcecde76b8cdc","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        super(ServersTest, self).setUp()"},{"line_number":41,"context_line":"        self.useFixture(floatingips.FloatingFixture(self.requests))"},{"line_number":42,"context_line":"        if self.api_version:"},{"line_number":43,"context_line":"            self.cs.api_version \u003d api_versions.APIVersion(self.api_version)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def test_list_servers(self):"},{"line_number":46,"context_line":"        sl \u003d self.cs.servers.list()"}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_72529c68","line":43,"in_reply_to":"1aa78d24_a9daa314","updated":"2016-07-26 21:04:18.000000000","message":"++ i\u0027ll split it in another change.","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"}],"novaclient/v2/client.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"22e04b3a8089e95b96c93d77a6a64cd64305ba53","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                 endpoint_type\u003d\u0027publicURL\u0027, extensions\u003dNone,"},{"line_number":66,"context_line":"                 service_type\u003d\u0027compute\u0027, service_name\u003dNone,"},{"line_number":67,"context_line":"                 volume_service_name\u003dNone, timings\u003dFalse,"},{"line_number":68,"context_line":"                 endpoint_override\u003dNone,"},{"line_number":69,"context_line":"                 os_cache\u003dFalse, no_cache\u003dTrue, http_log_debug\u003dFalse,"},{"line_number":70,"context_line":"                 auth_system\u003d\u0027keystone\u0027, auth_plugin\u003dNone, auth_token\u003dNone,"},{"line_number":71,"context_line":"                 cert\u003dNone, cacert\u003dNone, tenant_id\u003dNone, user_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_9b6d4235","line":68,"range":{"start_line":68,"start_character":17,"end_line":68,"end_character":34},"updated":"2016-06-22 01:37:35.000000000","message":"you will need to deprecate this parameter, not just replace it.","commit_id":"264906bc39743394027b03f0479f4dbae3aa9cd0"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"97ecb1dcf8d1a3a896202f927ad79ded0f37bdd7","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                 endpoint_type\u003d\u0027publicURL\u0027, extensions\u003dNone,"},{"line_number":66,"context_line":"                 service_type\u003d\u0027compute\u0027, service_name\u003dNone,"},{"line_number":67,"context_line":"                 volume_service_name\u003dNone, timings\u003dFalse,"},{"line_number":68,"context_line":"                 endpoint_override\u003dNone,"},{"line_number":69,"context_line":"                 os_cache\u003dFalse, no_cache\u003dTrue, http_log_debug\u003dFalse,"},{"line_number":70,"context_line":"                 auth_system\u003d\u0027keystone\u0027, auth_plugin\u003dNone, auth_token\u003dNone,"},{"line_number":71,"context_line":"                 cert\u003dNone, cacert\u003dNone, tenant_id\u003dNone, user_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3aaa91ec_0d874a62","line":68,"range":{"start_line":68,"start_character":17,"end_line":68,"end_character":34},"in_reply_to":"3aaa91ec_9b6d4235","updated":"2016-06-22 08:44:50.000000000","message":"It is already done, please look at novaclient.client.Client method.","commit_id":"264906bc39743394027b03f0479f4dbae3aa9cd0"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22d234148c935bbbf594a2cce82cc5c81cbeee43","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        :param str service_name: Service Name"},{"line_number":92,"context_line":"        :param str volume_service_name: Volume Service Name"},{"line_number":93,"context_line":"        :param bool timings: Timings"},{"line_number":94,"context_line":"        :param str endpoint_override: Bypass URL"},{"line_number":95,"context_line":"        :param bool os_cache: OS cache"},{"line_number":96,"context_line":"        :param bool no_cache: No cache"},{"line_number":97,"context_line":"        :param bool http_log_debug: Enable debugging for HTTP connections"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_49521f68","line":94,"updated":"2016-07-07 16:05:19.000000000","message":"Hmmm…you updated the parameter name, but didn\u0027t alter the parameter description in the docstring.","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"ef478740582e13525997b3215c5bcecde76b8cdc","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        :param str service_name: Service Name"},{"line_number":92,"context_line":"        :param str volume_service_name: Volume Service Name"},{"line_number":93,"context_line":"        :param bool timings: Timings"},{"line_number":94,"context_line":"        :param str endpoint_override: Bypass URL"},{"line_number":95,"context_line":"        :param bool os_cache: OS cache"},{"line_number":96,"context_line":"        :param bool no_cache: No cache"},{"line_number":97,"context_line":"        :param bool http_log_debug: Enable debugging for HTTP connections"}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_8348a95d","line":94,"in_reply_to":"1aa78d24_49521f68","updated":"2016-07-26 21:04:18.000000000","message":"Done","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"22d234148c935bbbf594a2cce82cc5c81cbeee43","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        :param str project_domain_name: Name of project domain"},{"line_number":113,"context_line":"        :param str user_domain_id: ID of user domain"},{"line_number":114,"context_line":"        :param str user_domain_name: Name of user domain"},{"line_number":115,"context_line":"        :param direct_use: Inner variable of novaclient. Do not use it outside"},{"line_number":116,"context_line":"            novaclient. It\u0027s restricted."},{"line_number":117,"context_line":"        :param logger: Logger"},{"line_number":118,"context_line":"        :param bool direct_use: Direct use"},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        if direct_use:"},{"line_number":121,"context_line":"            raise exceptions.Forbidden("}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_4559658d","line":118,"range":{"start_line":115,"start_character":0,"end_line":118,"end_character":42},"updated":"2016-07-07 16:05:19.000000000","message":"Just realized this docstring has two \":param direct_use:\" clauses now, and the new one has eliminated the type.","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"},{"author":{"_account_id":20259,"name":"Clenimar Filemon","email":"clenimar@lsd.ufcg.edu.br","username":"clenimar"},"change_message_id":"ef478740582e13525997b3215c5bcecde76b8cdc","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        :param str project_domain_name: Name of project domain"},{"line_number":113,"context_line":"        :param str user_domain_id: ID of user domain"},{"line_number":114,"context_line":"        :param str user_domain_name: Name of user domain"},{"line_number":115,"context_line":"        :param direct_use: Inner variable of novaclient. Do not use it outside"},{"line_number":116,"context_line":"            novaclient. It\u0027s restricted."},{"line_number":117,"context_line":"        :param logger: Logger"},{"line_number":118,"context_line":"        :param bool direct_use: Direct use"},{"line_number":119,"context_line":"        \"\"\""},{"line_number":120,"context_line":"        if direct_use:"},{"line_number":121,"context_line":"            raise exceptions.Forbidden("}],"source_content_type":"text/x-python","patch_set":12,"id":"dada55a8_c374619d","line":118,"range":{"start_line":115,"start_character":0,"end_line":118,"end_character":42},"in_reply_to":"1aa78d24_4559658d","updated":"2016-07-26 21:04:18.000000000","message":"Done","commit_id":"422ddb4f3ab0ac29b3eef7e6a72f87117c43f0d9"}],"novaclient/v2/shell.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"66d631fc3585fd46d2002c26fe436df20ce39506","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5a9d85d2_a4a0cb91","updated":"2016-06-20 17:12:20.000000000","message":"unrelated change","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e734e5b08c3bbd99767730aec678865fe7549436","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5a9d85d2_dda02ea2","in_reply_to":"5a9d85d2_a4a0cb91","updated":"2016-06-21 10:12:37.000000000","message":"I do not know why this change had happened","commit_id":"96f89d8aa7f839014007f83db7e9ff8d339113ae"}],"releasenotes/notes/switch-to-sessionclient-aa49d16599fea570.yaml":[{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"71f9d878bd782a38d42a9da55376a2b7f914440a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - In case of usage novaclient as a lib (via novaclient.client.Client"},{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_e16137d5","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":40},"updated":"2016-08-02 17:59:10.000000000","message":"\"When using novaclient as a library\"","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"921f9122b43f4ae94eedf41dcb14dc3eeedea8cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - In case of usage novaclient as a lib (via novaclient.client.Client"},{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_668555ac","line":3,"range":{"start_line":3,"start_character":4,"end_line":3,"end_character":40},"in_reply_to":"bacf61ea_e16137d5","updated":"2016-08-02 21:22:22.000000000","message":"Done","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"71f9d878bd782a38d42a9da55376a2b7f914440a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - In case of usage novaclient as a lib (via novaclient.client.Client"},{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"},{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_21818f4e","line":5,"range":{"start_line":4,"start_character":18,"end_line":5,"end_character":20},"updated":"2016-08-02 17:59:10.000000000","message":"\"an internal implementation of HTTPClient was used if a session object is not specified.\"\n\nAlso, s/use/using/ at the end of line 5.","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"921f9122b43f4ae94eedf41dcb14dc3eeedea8cf","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - In case of usage novaclient as a lib (via novaclient.client.Client"},{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"},{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_c69241f6","line":5,"range":{"start_line":4,"start_character":18,"end_line":5,"end_character":20},"in_reply_to":"bacf61ea_21818f4e","updated":"2016-08-02 21:22:22.000000000","message":"Done","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"71f9d878bd782a38d42a9da55376a2b7f914440a","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - In case of usage novaclient as a lib (via novaclient.client.Client"},{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"},{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"},{"line_number":9,"context_line":"    proxy_tenant_id, proxy_token, connection_pool, auth_plugin."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_c18cf381","line":6,"range":{"start_line":6,"start_character":58,"end_line":6,"end_character":67},"updated":"2016-08-02 17:59:10.000000000","message":"s/maintains/maintain/","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"921f9122b43f4ae94eedf41dcb14dc3eeedea8cf","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - In case of usage novaclient as a lib (via novaclient.client.Client"},{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"},{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"},{"line_number":9,"context_line":"    proxy_tenant_id, proxy_token, connection_pool, auth_plugin."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_06bbb976","line":6,"range":{"start_line":6,"start_character":58,"end_line":6,"end_character":67},"in_reply_to":"bacf61ea_c18cf381","updated":"2016-08-02 21:22:22.000000000","message":"Done","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"71f9d878bd782a38d42a9da55376a2b7f914440a","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"},{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"},{"line_number":9,"context_line":"    proxy_tenant_id, proxy_token, connection_pool, auth_plugin."},{"line_number":10,"context_line":"    SessionClient interface is similar too HTTPClient and there is small"},{"line_number":11,"context_line":"    possibility that you will notice difference."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_41ce43b5","line":8,"range":{"start_line":7,"start_character":33,"end_line":8,"end_character":67},"updated":"2016-08-02 17:59:10.000000000","message":"The only cases where we are unable to use SessionClient are when one of the following options are specified:","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"921f9122b43f4ae94eedf41dcb14dc3eeedea8cf","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    entry-point), inner implementation of HTTPClient was used if session object"},{"line_number":5,"context_line":"    is not specified. For better user experience we switched to use"},{"line_number":6,"context_line":"    SessionClient which uses keystoneauth (Keystone folks maintains this"},{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"},{"line_number":9,"context_line":"    proxy_tenant_id, proxy_token, connection_pool, auth_plugin."},{"line_number":10,"context_line":"    SessionClient interface is similar too HTTPClient and there is small"},{"line_number":11,"context_line":"    possibility that you will notice difference."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_466c9108","line":8,"range":{"start_line":7,"start_character":33,"end_line":8,"end_character":67},"in_reply_to":"bacf61ea_41ce43b5","updated":"2016-08-02 21:22:22.000000000","message":"Done","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"71f9d878bd782a38d42a9da55376a2b7f914440a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"},{"line_number":9,"context_line":"    proxy_tenant_id, proxy_token, connection_pool, auth_plugin."},{"line_number":10,"context_line":"    SessionClient interface is similar too HTTPClient and there is small"},{"line_number":11,"context_line":"    possibility that you will notice difference."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_c15193da","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":47},"updated":"2016-08-02 17:59:10.000000000","message":"The SessionClient interface is similar to HTTPClient, but there is a small possibility that you will notice a difference.","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"921f9122b43f4ae94eedf41dcb14dc3eeedea8cf","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    library) for all auth stuff. There are only several cases when we are"},{"line_number":8,"context_line":"    unable to use SessionClient, when of next options are specified: os_cache,"},{"line_number":9,"context_line":"    proxy_tenant_id, proxy_token, connection_pool, auth_plugin."},{"line_number":10,"context_line":"    SessionClient interface is similar too HTTPClient and there is small"},{"line_number":11,"context_line":"    possibility that you will notice difference."}],"source_content_type":"text/x-yaml","patch_set":16,"id":"bacf61ea_e6666528","line":11,"range":{"start_line":10,"start_character":4,"end_line":11,"end_character":47},"in_reply_to":"bacf61ea_c15193da","updated":"2016-08-02 21:22:22.000000000","message":"Done","commit_id":"c555e3be956c09e025dd60ee12ba91873192fd93"},{"author":{"_account_id":679,"name":"Kevin L. Mitchell","email":"klmitch@mit.edu","username":"klmitch"},"change_message_id":"fece38407c1d8483a1d671793f3c915c175f0d36","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - When using novaclient as a library (via novaclient.client.Client "},{"line_number":4,"context_line":"    entry-point), an internal implementation of HTTPClient was used if a "},{"line_number":5,"context_line":"    session object is not specified. For better user experience we switched "},{"line_number":6,"context_line":"    to using SessionClient which uses keystoneauth (Keystone folks maintain "}],"source_content_type":"text/x-yaml","patch_set":17,"id":"bacf61ea_1018e183","line":3,"range":{"start_line":3,"start_character":68,"end_line":3,"end_character":69},"updated":"2016-08-03 15:24:28.000000000","message":"femtonit: trailing whitespace on most lines in this file.  Fix if you have to re-roll…","commit_id":"dcddce4d1ef66aae7201da45be7c146290f5e9c8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e32d30b745eecf89bed4da0df236bebfc0ec970d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"upgrade:"},{"line_number":3,"context_line":"  - When using novaclient as a library (via novaclient.client.Client "},{"line_number":4,"context_line":"    entry-point), an internal implementation of HTTPClient was used if a "},{"line_number":5,"context_line":"    session object is not specified. For better user experience we switched "},{"line_number":6,"context_line":"    to using SessionClient which uses keystoneauth (Keystone folks maintain "}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3ac371cc_0729318a","line":3,"range":{"start_line":3,"start_character":68,"end_line":3,"end_character":69},"in_reply_to":"bacf61ea_1018e183","updated":"2016-08-18 12:16:14.000000000","message":"Done","commit_id":"dcddce4d1ef66aae7201da45be7c146290f5e9c8"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"2e6d0fd8ed3ab85e6227b7086b4968ca4b653959","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    this library) for all auth stuff. The only cases where we are unable to "},{"line_number":8,"context_line":"    use SessionClient are when one of the following options are specified"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    * os_cache;"},{"line_number":11,"context_line":"    * proxy_tenant_id;"},{"line_number":12,"context_line":"    * proxy_token;"},{"line_number":13,"context_line":"    * connection_pool;"},{"line_number":14,"context_line":"    * auth_plugin."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    The SessionClient interface is similar to HTTPClient, but there is a "},{"line_number":17,"context_line":"    small possibility that you will notice a difference."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3ac371cc_dfed8ef0","line":14,"range":{"start_line":10,"start_character":4,"end_line":14,"end_character":18},"updated":"2016-08-16 20:41:18.000000000","message":"These don\u0027t format as a list:\n\nhttp://docs-draft.openstack.org/35/304035/17/check/gate-python-novaclient-releasenotes/9522813//releasenotes/build/html/unreleased.html#id1\n\nYou need to format this note like so:\n\nupgrade:\n  - |\n    When using...","commit_id":"dcddce4d1ef66aae7201da45be7c146290f5e9c8"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"e32d30b745eecf89bed4da0df236bebfc0ec970d","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    this library) for all auth stuff. The only cases where we are unable to "},{"line_number":8,"context_line":"    use SessionClient are when one of the following options are specified"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"    * os_cache;"},{"line_number":11,"context_line":"    * proxy_tenant_id;"},{"line_number":12,"context_line":"    * proxy_token;"},{"line_number":13,"context_line":"    * connection_pool;"},{"line_number":14,"context_line":"    * auth_plugin."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    The SessionClient interface is similar to HTTPClient, but there is a "},{"line_number":17,"context_line":"    small possibility that you will notice a difference."}],"source_content_type":"text/x-yaml","patch_set":17,"id":"3ac371cc_07a491b7","line":14,"range":{"start_line":10,"start_character":4,"end_line":14,"end_character":18},"in_reply_to":"3ac371cc_dfed8ef0","updated":"2016-08-18 12:16:14.000000000","message":"Done","commit_id":"dcddce4d1ef66aae7201da45be7c146290f5e9c8"}]}
