)]}'
{"id":"openstack%2Fkeystoneauth~256002","triplet_id":"openstack%2Fkeystoneauth~master~I46f336f25fac5b524547bb13e4f5438ebf1d4320","project":"openstack/keystoneauth","branch":"master","topic":"rfc7231_user_agent","hashtags":[],"change_id":"I46f336f25fac5b524547bb13e4f5438ebf1d4320","subject":"Provide a RFC 7231 compliant user agent string","status":"MERGED","created":"2015-12-10 17:28:36.000000000","updated":"2015-12-16 07:59:16.000000000","submitted":"2015-12-16 07:59:11.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"3b4b36993058a67aca7bdfedead54ac2a05f6fd9","_number":256002,"virtual_id_number":256002,"owner":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"value":0,"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},{"value":0,"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},{"value":0,"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},{"value":0,"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":0,"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"value":2,"date":"2015-12-16 07:59:11.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"all":[{"value":0,"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"value":2,"date":"2015-12-16 06:33:16.000000000","_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},{"value":0,"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},{"value":0,"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},{"value":2,"date":"2015-12-16 06:32:48.000000000","_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":0,"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"all":[{"value":0,"date":"2015-12-15 22:56:39.000000000","_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"value":1,"date":"2015-12-16 06:33:16.000000000","_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},{"value":0,"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},{"value":0,"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},{"value":0,"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"value":0,"date":"2015-12-15 22:56:42.000000000","_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-12-10 17:43:16.000000000","updated_by":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"reviewer":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"state":"REVIEWER"},{"updated":"2015-12-15 22:56:39.000000000","updated_by":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"reviewer":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"state":"REVIEWER"},{"updated":"2015-12-15 22:56:42.000000000","updated_by":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"reviewer":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"state":"REVIEWER"},{"updated":"2015-12-16 06:32:48.000000000","updated_by":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"reviewer":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"state":"REVIEWER"},{"updated":"2015-12-16 06:33:16.000000000","updated_by":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"reviewer":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"state":"REVIEWER"},{"updated":"2015-12-16 07:59:11.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"3ec295d5b10bed3f3b0b8fb43ceed7a7ebdd805b","author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"date":"2015-12-10 17:28:36.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"d66ca99d321f335c3bf6bd7a3c81851fced7c33d","author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"date":"2015-12-10 17:43:16.000000000","message":"Patch Set 1: Code-Review+2","accounts_in_message":[],"_revision_number":1},{"id":"31c8d112f3a0710688d6ec56b46b66156b9fd29e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-10 19:08:59.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-keystoneauth-pep8 http://logs.openstack.org/02/256002/1/check/gate-keystoneauth-pep8/4fd1fa8/ : SUCCESS in 2m 52s\n- gate-keystoneauth-docs http://docs-draft.openstack.org/02/256002/1/check/gate-keystoneauth-docs/03d0e05//doc/build/html/ : SUCCESS in 3m 30s\n- gate-keystoneauth-python27 http://logs.openstack.org/02/256002/1/check/gate-keystoneauth-python27/4dd0edb/ : SUCCESS in 3m 11s\n- gate-keystoneauth-python34 http://logs.openstack.org/02/256002/1/check/gate-keystoneauth-python34/4dd906a/ : SUCCESS in 4m 00s\n- gate-tempest-dsvm-neutron-src-keystoneauth http://logs.openstack.org/02/256002/1/check/gate-tempest-dsvm-neutron-src-keystoneauth/dc923e1/ : SUCCESS in 1h 09m 38s","accounts_in_message":[],"_revision_number":1},{"id":"37a7fb07dbc99e7ebebe360dc8ff4313398e361f","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2015-12-10 21:51:09.000000000","message":"Patch Set 1: Code-Review+2\n\nlooks fine, i\u0027ll let jamie and others chime in and take a look","accounts_in_message":[],"_revision_number":1},{"id":"77a91d45f5f709583ac56bbb669e741e0b7eeb6f","author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"date":"2015-12-15 22:09:54.000000000","message":"Patch Set 1: Code-Review-1\n\nIs PBR meant to be a runtime requirement?","accounts_in_message":[],"_revision_number":1},{"id":"8dda1638f41aa93ddfc2fb7532825d5f516cc01a","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2015-12-15 22:09:57.000000000","message":"Patch Set 1: -Code-Review\n\njust realized pbr isn\u0027t in the requirements file, need to add it there.\n\nalso, depending on pbr for a library, is that something we really want?","accounts_in_message":[],"_revision_number":1},{"id":"519c057dce244c9839f3c2dfd42e8c8692924c20","author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"date":"2015-12-15 22:12:46.000000000","message":"Patch Set 1:\n\nIf there\u0027s a more preferred way to get the version, I\u0027ll put that in there. This is just what we had in SDK.","accounts_in_message":[],"_revision_number":1},{"id":"a8a64d0c682cb4ddf917b6abf55987e856e7ca21","author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"date":"2015-12-15 22:38:43.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"cf7b0a932f72624c5b69d50bfa2b6553dc7d5816","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2015-12-15 22:44:11.000000000","message":"Patch Set 2: Code-Review+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"9088971e18d87389dd951b2477f952180c9b3178","author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"date":"2015-12-15 22:45:22.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"745282c27ceab53dc68a574ec42193651380017f","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2015-12-15 22:56:33.000000000","message":"Patch Set 3: Code-Review+1\n\nlgtm","accounts_in_message":[],"_revision_number":3},{"id":"ffa16cbf22559e9a7760b08abbd578be97a78273","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-16 00:51:28.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-keystoneauth-pep8 http://logs.openstack.org/02/256002/3/check/gate-keystoneauth-pep8/9e1d0ab/ : SUCCESS in 2m 28s\n- gate-keystoneauth-docs http://docs-draft.openstack.org/02/256002/3/check/gate-keystoneauth-docs/50142c7//doc/build/html/ : SUCCESS in 2m 38s\n- gate-keystoneauth-python27 http://logs.openstack.org/02/256002/3/check/gate-keystoneauth-python27/ea13de7/ : SUCCESS in 2m 17s\n- gate-keystoneauth-python34 http://logs.openstack.org/02/256002/3/check/gate-keystoneauth-python34/f7a9af8/ : SUCCESS in 2m 58s\n- gate-keystoneauth-requirements http://logs.openstack.org/02/256002/3/check/gate-keystoneauth-requirements/0c7e877/ : SUCCESS in 18s\n- gate-tempest-dsvm-neutron-src-keystoneauth http://logs.openstack.org/02/256002/3/check/gate-tempest-dsvm-neutron-src-keystoneauth/654213e/ : SUCCESS in 1h 25m 40s\n- gate-keystoneauth-releasenotes http://docs-draft.openstack.org/02/256002/3/check/gate-keystoneauth-releasenotes/aa562cf//releasenotes/build/html/ : SUCCESS in 2m 09s","accounts_in_message":[],"_revision_number":3},{"id":"e714dbfd9c60c38fd562c6894a9d368918b31d60","author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"date":"2015-12-16 06:32:48.000000000","message":"Patch Set 3: Code-Review+2","accounts_in_message":[],"_revision_number":3},{"id":"ddacfdcb9d66893f1020e06dcfb8442ef8e20bf2","author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"date":"2015-12-16 06:33:16.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":3},{"id":"7ce18e6e27992b8e4e86b5bba1c4552b97d21b10","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-16 06:34:25.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"e38c4a6639564b0ea5982e9670e4bdaf5965c952","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-16 07:59:11.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-keystoneauth-docs http://docs-draft.openstack.org/02/256002/3/gate/gate-keystoneauth-docs/08f1228//doc/build/html/ : SUCCESS in 3m 21s\n- gate-keystoneauth-pep8 http://logs.openstack.org/02/256002/3/gate/gate-keystoneauth-pep8/9b72bd9/ : SUCCESS in 4m 27s\n- gate-keystoneauth-python27 http://logs.openstack.org/02/256002/3/gate/gate-keystoneauth-python27/ba0a6e0/ : SUCCESS in 3m 07s\n- gate-keystoneauth-python34 http://logs.openstack.org/02/256002/3/gate/gate-keystoneauth-python34/9f88a7d/ : SUCCESS in 3m 39s\n- gate-keystoneauth-requirements http://logs.openstack.org/02/256002/3/gate/gate-keystoneauth-requirements/aadfa74/ : SUCCESS in 26s\n- gate-tempest-dsvm-neutron-src-keystoneauth http://logs.openstack.org/02/256002/3/gate/gate-tempest-dsvm-neutron-src-keystoneauth/9aea7b0/ : SUCCESS in 1h 24m 00s\n- gate-keystoneauth-releasenotes http://docs-draft.openstack.org/02/256002/3/gate/gate-keystoneauth-releasenotes/bbb84da//releasenotes/build/html/ : SUCCESS in 3m 04s","accounts_in_message":[],"_revision_number":3},{"id":"5596de635f8caa517434bffd9bd0b30b1c9f11bb","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-16 07:59:16.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"bbd85fded7038435e7a26f2f12b29815fa61a8b2","revisions":{"af4abf1bdc7f2a4f7597462910c3c8a3768046d4":{"kind":"REWORK","_number":1,"created":"2015-12-10 17:28:36.000000000","uploader":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"ref":"refs/changes/02/256002/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystoneauth","ref":"refs/changes/02/256002/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/1"}}},"commit":{"parents":[{"commit":"30f9a02fa2552db2fe6a0f61f6fa761094e1f663","subject":"Merge \"Remove confusing documentation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/30f9a02fa2552db2fe6a0f61f6fa761094e1f663"}]}],"author":{"name":"briancurtin","email":"brian.curtin@rackspace.com","date":"2015-12-10 16:42:37.000000000","tz":-360},"committer":{"name":"briancurtin","email":"brian.curtin@rackspace.com","date":"2015-12-10 17:21:45.000000000","tz":-360},"subject":"Provide a RFC 7231 compliant user agent string","message":"Provide a RFC 7231 compliant user agent string\n\nThe current default of \"keystoneauth1\" doesn\u0027t convey enough\ninformation, and additionally when the user of a Session supplies their\nown user agent, it stomps on any notion of keystoneauth1 being there.\n\nPer RFC 7231 Section 5.5.3\n(https://tools.ietf.org/html/rfc7231#section-5.5.3), user agents should\nbasically be a space-delimited list of product/version pairs in\ndecreasing order of importance. This change makes the default user agent\nsomething like the following:\n\nkeystoneauth1/2.1.1 python-requests/2.8.1 CPython/3.4.1+\n\nDue to the decreasing order of importance, when a user creates a Session\nwith something like Session(user_agent\u003d\"my-product/1.0\"),\n\u0027my-product/1.0\u0027 is then prepended to the above list. The only time this\nis not the case is if a user agent is provided directly to\nSession.request. In that case, the User-Agent header is set to whatever\nthe provided argument is, verbatim.\n\nThis was a change we had originally made to the Transport class in\npython-openstacksdk (I80ca26fff3f2522b8232472676396abb86166f91), but\nupon moving to keystoneauth instead of our own implementation, it was\nnoticed that we lost this, and keystoneauth is a better place for this\nthan for us to re-implement it inside of python-openstacksdk.\n\nChange-Id: I46f336f25fac5b524547bb13e4f5438ebf1d4320\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/af4abf1bdc7f2a4f7597462910c3c8a3768046d4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/af4abf1bdc7f2a4f7597462910c3c8a3768046d4"}]},"branch":"refs/heads/master"},"06bb2338e4d74553d8d1a4d5d425dc3802429b79":{"kind":"REWORK","_number":2,"created":"2015-12-15 22:38:43.000000000","uploader":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"ref":"refs/changes/02/256002/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystoneauth","ref":"refs/changes/02/256002/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/2"}}},"commit":{"parents":[{"commit":"30f9a02fa2552db2fe6a0f61f6fa761094e1f663","subject":"Merge \"Remove confusing documentation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/30f9a02fa2552db2fe6a0f61f6fa761094e1f663"}]}],"author":{"name":"briancurtin","email":"brian.curtin@rackspace.com","date":"2015-12-10 16:42:37.000000000","tz":-360},"committer":{"name":"briancurtin","email":"brian.curtin@rackspace.com","date":"2015-12-15 22:38:36.000000000","tz":-360},"subject":"Provide a RFC 7231 compliant user agent string","message":"Provide a RFC 7231 compliant user agent string\n\nThe current default of \"keystoneauth1\" doesn\u0027t convey enough\ninformation, and additionally when the user of a Session supplies their\nown user agent, it stomps on any notion of keystoneauth1 being there.\n\nPer RFC 7231 Section 5.5.3\n(https://tools.ietf.org/html/rfc7231#section-5.5.3), user agents should\nbasically be a space-delimited list of product/version pairs in\ndecreasing order of importance. This change makes the default user agent\nsomething like the following:\n\nkeystoneauth1/2.1.1 python-requests/2.8.1 CPython/3.4.1+\n\nDue to the decreasing order of importance, when a user creates a Session\nwith something like Session(user_agent\u003d\"my-product/1.0\"),\n\u0027my-product/1.0\u0027 is then prepended to the above list. The only time this\nis not the case is if a user agent is provided directly to\nSession.request. In that case, the User-Agent header is set to whatever\nthe provided argument is, verbatim.\n\nThis was a change we had originally made to the Transport class in\npython-openstacksdk (I80ca26fff3f2522b8232472676396abb86166f91), but\nupon moving to keystoneauth instead of our own implementation, it was\nnoticed that we lost this, and keystoneauth is a better place for this\nthan for us to re-implement it inside of python-openstacksdk.\n\nChange-Id: I46f336f25fac5b524547bb13e4f5438ebf1d4320\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/06bb2338e4d74553d8d1a4d5d425dc3802429b79"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/06bb2338e4d74553d8d1a4d5d425dc3802429b79"}]},"branch":"refs/heads/master"},"bbd85fded7038435e7a26f2f12b29815fa61a8b2":{"kind":"REWORK","_number":3,"created":"2015-12-15 22:45:22.000000000","uploader":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"ref":"refs/changes/02/256002/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystoneauth","ref":"refs/changes/02/256002/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystoneauth refs/changes/02/256002/3"}}},"commit":{"parents":[{"commit":"30f9a02fa2552db2fe6a0f61f6fa761094e1f663","subject":"Merge \"Remove confusing documentation\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/30f9a02fa2552db2fe6a0f61f6fa761094e1f663"}]}],"author":{"name":"briancurtin","email":"brian.curtin@rackspace.com","date":"2015-12-10 16:42:37.000000000","tz":-360},"committer":{"name":"briancurtin","email":"brian.curtin@rackspace.com","date":"2015-12-15 22:45:17.000000000","tz":-360},"subject":"Provide a RFC 7231 compliant user agent string","message":"Provide a RFC 7231 compliant user agent string\n\nThe current default of \"keystoneauth1\" doesn\u0027t convey enough\ninformation, and additionally when the user of a Session supplies their\nown user agent, it stomps on any notion of keystoneauth1 being there.\n\nPer RFC 7231 Section 5.5.3\n(https://tools.ietf.org/html/rfc7231#section-5.5.3), user agents should\nbasically be a space-delimited list of product/version pairs in\ndecreasing order of importance. This change makes the default user agent\nsomething like the following:\n\nkeystoneauth1/2.1.1 python-requests/2.8.1 CPython/3.4.1+\n\nDue to the decreasing order of importance, when a user creates a Session\nwith something like Session(user_agent\u003d\"my-product/1.0\"),\n\u0027my-product/1.0\u0027 is then prepended to the above list. The only time this\nis not the case is if a user agent is provided directly to\nSession.request. In that case, the User-Agent header is set to whatever\nthe provided argument is, verbatim.\n\nThis was a change we had originally made to the Transport class in\npython-openstacksdk (I80ca26fff3f2522b8232472676396abb86166f91), but\nupon moving to keystoneauth instead of our own implementation, it was\nnoticed that we lost this, and keystoneauth is a better place for this\nthan for us to re-implement it inside of python-openstacksdk.\n\nChange-Id: I46f336f25fac5b524547bb13e4f5438ebf1d4320\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/bbd85fded7038435e7a26f2f12b29815fa61a8b2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystoneauth/commit/bbd85fded7038435e7a26f2f12b29815fa61a8b2"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
