)]}'
{"doc/source/using-sessions.rst":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":355,"context_line":"Requesting a Microversion"},{"line_number":356,"context_line":"-------------------------"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"A user that wants to request a microversion for a given request can pass it"},{"line_number":359,"context_line":"to the ``microversion`` parameter of the `request` method on the"},{"line_number":360,"context_line":":class:`keystoneauth1.session.Session` object, or the"},{"line_number":361,"context_line":":class:`keystoneauth1.adapter.Adapter` object. This will cause `keystoneauth`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_86666f51","line":358,"range":{"start_line":358,"start_character":21,"end_line":358,"end_character":28},"updated":"2017-07-12 14:29:53.000000000","message":"specify","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":355,"context_line":"Requesting a Microversion"},{"line_number":356,"context_line":"-------------------------"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"A user that wants to request a microversion for a given request can pass it"},{"line_number":359,"context_line":"to the ``microversion`` parameter of the `request` method on the"},{"line_number":360,"context_line":":class:`keystoneauth1.session.Session` object, or the"},{"line_number":361,"context_line":":class:`keystoneauth1.adapter.Adapter` object. This will cause `keystoneauth`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_412fc53e","line":358,"range":{"start_line":358,"start_character":21,"end_line":358,"end_character":28},"in_reply_to":"1f1a1f67_86666f51","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":362,"context_line":"to pass the appropriate header to the service informing the service of the"},{"line_number":363,"context_line":"microversion the user wants."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"If the user is using an :class:`keystoneauth1.adapter.Adapter`, the"},{"line_number":366,"context_line":"`service_type`, which is a part of the data sent in the microversion header,"},{"line_number":367,"context_line":"will be taken from the adapter\u0027s `service_type`."},{"line_number":368,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_e64e43c0","line":365,"range":{"start_line":365,"start_character":21,"end_line":365,"end_character":23},"updated":"2017-07-12 14:29:53.000000000","message":"`a`","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":362,"context_line":"to pass the appropriate header to the service informing the service of the"},{"line_number":363,"context_line":"microversion the user wants."},{"line_number":364,"context_line":""},{"line_number":365,"context_line":"If the user is using an :class:`keystoneauth1.adapter.Adapter`, the"},{"line_number":366,"context_line":"`service_type`, which is a part of the data sent in the microversion header,"},{"line_number":367,"context_line":"will be taken from the adapter\u0027s `service_type`."},{"line_number":368,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_213289a8","line":365,"range":{"start_line":365,"start_character":21,"end_line":365,"end_character":23},"in_reply_to":"1f1a1f67_e64e43c0","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"If the user is using an :class:`keystoneauth1.adapter.Adapter`, the"},{"line_number":366,"context_line":"`service_type`, which is a part of the data sent in the microversion header,"},{"line_number":367,"context_line":"will be taken from the adapter\u0027s `service_type`."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"If the user is using a :class:`keystoneauth1.session.Session`, the"},{"line_number":370,"context_line":"`service_type` will be taken from the `service_type` in `endpoint_filter`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_c64b47ae","line":367,"range":{"start_line":367,"start_character":23,"end_line":367,"end_character":30},"updated":"2017-07-12 14:29:53.000000000","message":"Adapter\u0027s (capitalize)","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":364,"context_line":""},{"line_number":365,"context_line":"If the user is using an :class:`keystoneauth1.adapter.Adapter`, the"},{"line_number":366,"context_line":"`service_type`, which is a part of the data sent in the microversion header,"},{"line_number":367,"context_line":"will be taken from the adapter\u0027s `service_type`."},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"If the user is using a :class:`keystoneauth1.session.Session`, the"},{"line_number":370,"context_line":"`service_type` will be taken from the `service_type` in `endpoint_filter`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"1f1a1f67_0129cd36","line":367,"range":{"start_line":367,"start_character":23,"end_line":367,"end_character":30},"in_reply_to":"1f1a1f67_c64b47ae","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"If the user is using a :class:`keystoneauth1.adapter.Adapter`, the"},{"line_number":379,"context_line":"`service_type`, which is a part of the data sent in the microversion header,"},{"line_number":380,"context_line":"will be taken from the Adapter\u0027s `service_type`."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"If the user is using a :class:`keystoneauth1.session.Session`, the"},{"line_number":383,"context_line":"`service_type` will be taken from the `service_type` in `endpoint_filter`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_b19d47bd","line":380,"updated":"2017-07-19 15:08:20.000000000","message":"could have mentioned there is the option to define the default_microversion on construction time","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":377,"context_line":""},{"line_number":378,"context_line":"If the user is using a :class:`keystoneauth1.adapter.Adapter`, the"},{"line_number":379,"context_line":"`service_type`, which is a part of the data sent in the microversion header,"},{"line_number":380,"context_line":"will be taken from the Adapter\u0027s `service_type`."},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"If the user is using a :class:`keystoneauth1.session.Session`, the"},{"line_number":383,"context_line":"`service_type` will be taken from the `service_type` in `endpoint_filter`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_027f0bab","line":380,"in_reply_to":"1f1a1f67_b19d47bd","updated":"2017-07-19 16:20:02.000000000","message":"Done","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":382,"context_line":"If the user is using a :class:`keystoneauth1.session.Session`, the"},{"line_number":383,"context_line":"`service_type` will be taken from the `service_type` in `endpoint_filter`"},{"line_number":384,"context_line":"or alternately from the parameter `microversion_service_type` in case there"},{"line_number":385,"context_line":"is no `service_type` in `endpoint_filter` for some reason."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":".. _API-WG Specs: http://specs.openstack.org/openstack/api-wg/"},{"line_number":388,"context_line":".. _Consuming the Catalog: http://specs.openstack.org/openstack/api-wg/guidelines/consuming-catalog.html"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_510a731f","line":385,"range":{"start_line":385,"start_character":21,"end_line":385,"end_character":57},"updated":"2017-07-19 15:08:20.000000000","message":"would be nice to increment the docs with an example.","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":382,"context_line":"If the user is using a :class:`keystoneauth1.session.Session`, the"},{"line_number":383,"context_line":"`service_type` will be taken from the `service_type` in `endpoint_filter`"},{"line_number":384,"context_line":"or alternately from the parameter `microversion_service_type` in case there"},{"line_number":385,"context_line":"is no `service_type` in `endpoint_filter` for some reason."},{"line_number":386,"context_line":""},{"line_number":387,"context_line":".. _API-WG Specs: http://specs.openstack.org/openstack/api-wg/"},{"line_number":388,"context_line":".. _Consuming the Catalog: http://specs.openstack.org/openstack/api-wg/guidelines/consuming-catalog.html"}],"source_content_type":"text/x-rst","patch_set":13,"id":"1f1a1f67_427983c5","line":385,"range":{"start_line":385,"start_character":21,"end_line":385,"end_character":57},"in_reply_to":"1f1a1f67_510a731f","updated":"2017-07-19 16:20:02.000000000","message":"Done","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"}],"keystoneauth1/adapter.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    :param default_microversion: The default microversion value to send"},{"line_number":81,"context_line":"                                 with API requests. While microversions are"},{"line_number":82,"context_line":"                                 a per-request feature, a user may know they"},{"line_number":83,"context_line":"                                 want to default to sending a value other than"},{"line_number":84,"context_line":"                                 the default. (optional)"},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    client_name \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_e6e3e3a3","line":84,"range":{"start_line":83,"start_character":41,"end_line":84,"end_character":44},"updated":"2017-07-12 14:29:53.000000000","message":"This wording is weird.  I don\u0027t have a better suggestion, though.","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    :param default_microversion: The default microversion value to send"},{"line_number":81,"context_line":"                                 with API requests. While microversions are"},{"line_number":82,"context_line":"                                 a per-request feature, a user may know they"},{"line_number":83,"context_line":"                                 want to default to sending a value other than"},{"line_number":84,"context_line":"                                 the default. (optional)"},{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    client_name \u003d None"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_41d46520","line":84,"range":{"start_line":83,"start_character":41,"end_line":84,"end_character":44},"in_reply_to":"1f1a1f67_e6e3e3a3","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class Adapter(object):"},{"line_number":22,"context_line":"    \"\"\"An instance of a session with local variables."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    A session is a global object that is shared around amongst many clients. It"},{"line_number":25,"context_line":"    therefore contains state that is relevant to everyone. There is a lot of"},{"line_number":26,"context_line":"    state such as the service type and region_name that are only relevant to a"},{"line_number":27,"context_line":"    particular client that is using the session. An adapter provides a wrapper"},{"line_number":28,"context_line":"    of client local data around the global session object."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    version, min_version, max_version and default_microversion can all be"},{"line_number":31,"context_line":"    given either as a string or a tuple."}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_acd84e52","line":28,"range":{"start_line":24,"start_character":4,"end_line":28,"end_character":58},"updated":"2017-07-19 15:08:20.000000000","message":"so this is why it makes sense to have a default_microversion in an adapter. and does not make in the session level","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":21,"context_line":"class Adapter(object):"},{"line_number":22,"context_line":"    \"\"\"An instance of a session with local variables."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    A session is a global object that is shared around amongst many clients. It"},{"line_number":25,"context_line":"    therefore contains state that is relevant to everyone. There is a lot of"},{"line_number":26,"context_line":"    state such as the service type and region_name that are only relevant to a"},{"line_number":27,"context_line":"    particular client that is using the session. An adapter provides a wrapper"},{"line_number":28,"context_line":"    of client local data around the global session object."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    version, min_version, max_version and default_microversion can all be"},{"line_number":31,"context_line":"    given either as a string or a tuple."}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_4262a30b","line":28,"range":{"start_line":24,"start_character":4,"end_line":28,"end_character":58},"in_reply_to":"1f1a1f67_acd84e52","updated":"2017-07-19 16:20:02.000000000","message":"Yes!","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"}],"keystoneauth1/session.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    def _get_microversion_header("},{"line_number":410,"context_line":"            self, microversion, service_type, endpoint_filter):"},{"line_number":411,"context_line":"        # We\u0027re converting it to normalized version number for two reasons."},{"line_number":412,"context_line":"        # First, to validate it\u0027s a real version number. Second, so that in"},{"line_number":413,"context_line":"        # the future we can pre-validate that it is within the range of"},{"line_number":414,"context_line":"        # available microversions before we send the request."},{"line_number":415,"context_line":"        microversion \u003d discover.normalize_version_number(microversion)"},{"line_number":416,"context_line":"        if not service_type:"},{"line_number":417,"context_line":"            if endpoint_filter and \u0027service_type\u0027 in endpoint_filter:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_46a3b750","line":414,"range":{"start_line":412,"start_character":73,"end_line":414,"end_character":61},"updated":"2017-07-12 14:29:53.000000000","message":"This should be a TODO.\n\n[Later] Oh, I see it below.  But it should really be done here, I think.","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":409,"context_line":"    def _get_microversion_header("},{"line_number":410,"context_line":"            self, microversion, service_type, endpoint_filter):"},{"line_number":411,"context_line":"        # We\u0027re converting it to normalized version number for two reasons."},{"line_number":412,"context_line":"        # First, to validate it\u0027s a real version number. Second, so that in"},{"line_number":413,"context_line":"        # the future we can pre-validate that it is within the range of"},{"line_number":414,"context_line":"        # available microversions before we send the request."},{"line_number":415,"context_line":"        microversion \u003d discover.normalize_version_number(microversion)"},{"line_number":416,"context_line":"        if not service_type:"},{"line_number":417,"context_line":"            if endpoint_filter and \u0027service_type\u0027 in endpoint_filter:"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_21a5e9b5","line":414,"range":{"start_line":412,"start_character":73,"end_line":414,"end_character":61},"in_reply_to":"1f1a1f67_46a3b750","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        :param microversion: Microversion to send for this request."},{"line_number":507,"context_line":"                       microversion can be given as a string or a tuple."},{"line_number":508,"context_line":"                       (optional)"},{"line_number":509,"context_line":"        :param str microversion_service_type: service_type to be send in the"},{"line_number":510,"context_line":"                       microversion header, if a microversion is given."},{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_86c2efe8","line":509,"range":{"start_line":509,"start_character":65,"end_line":509,"end_character":69},"updated":"2017-07-12 14:29:53.000000000","message":"sent","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        :param microversion: Microversion to send for this request."},{"line_number":507,"context_line":"                       microversion can be given as a string or a tuple."},{"line_number":508,"context_line":"                       (optional)"},{"line_number":509,"context_line":"        :param str microversion_service_type: service_type to be send in the"},{"line_number":510,"context_line":"                       microversion header, if a microversion is given."},{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_a1e21900","line":509,"range":{"start_line":509,"start_character":65,"end_line":509,"end_character":69},"in_reply_to":"1f1a1f67_86c2efe8","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                       microversion header, if a microversion is given."},{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":513,"context_line":"                       does not have a service-type, microversion is given and"},{"line_number":514,"context_line":"                       microversion_service_type is not provided, the an"},{"line_number":515,"context_line":"                       exception will be raised."},{"line_number":516,"context_line":"        :param kwargs: any other parameter that can be passed to"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_26b1db90","line":513,"range":{"start_line":513,"start_character":46,"end_line":513,"end_character":47},"updated":"2017-07-12 14:29:53.000000000","message":"_","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":510,"context_line":"                       microversion header, if a microversion is given."},{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":513,"context_line":"                       does not have a service-type, microversion is given and"},{"line_number":514,"context_line":"                       microversion_service_type is not provided, the an"},{"line_number":515,"context_line":"                       exception will be raised."},{"line_number":516,"context_line":"        :param kwargs: any other parameter that can be passed to"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_41bd85d6","line":513,"range":{"start_line":513,"start_character":46,"end_line":513,"end_character":47},"in_reply_to":"1f1a1f67_26b1db90","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c8f97e40d1860fd6e7ed930c3cee95825cbe1eaf","unresolved":false,"context_lines":[{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":513,"context_line":"                       does not have a service-type, microversion is given and"},{"line_number":514,"context_line":"                       microversion_service_type is not provided, the an"},{"line_number":515,"context_line":"                       exception will be raised."},{"line_number":516,"context_line":"        :param kwargs: any other parameter that can be passed to"},{"line_number":517,"context_line":"                       :meth:`requests.Session.request` (such as `headers`)."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_86678f26","line":514,"range":{"start_line":514,"start_character":66,"end_line":514,"end_character":69},"updated":"2017-07-12 14:29:53.000000000","message":"strike","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"f6efee19d5a9e6db4c73de44dafcb0661e054c63","unresolved":false,"context_lines":[{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":513,"context_line":"                       does not have a service-type, microversion is given and"},{"line_number":514,"context_line":"                       microversion_service_type is not provided, the an"},{"line_number":515,"context_line":"                       exception will be raised."},{"line_number":516,"context_line":"        :param kwargs: any other parameter that can be passed to"},{"line_number":517,"context_line":"                       :meth:`requests.Session.request` (such as `headers`)."}],"source_content_type":"text/x-python","patch_set":3,"id":"1f1a1f67_e1b931e9","line":514,"range":{"start_line":514,"start_character":66,"end_line":514,"end_character":69},"in_reply_to":"1f1a1f67_86678f26","updated":"2017-07-14 20:33:03.000000000","message":"Done","commit_id":"2b7dbe32a764ab72b4567de5a5a0ed96b18c471c"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"40d3cac4e524822a8350aa204f19bdaa6712538e","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        logger.debug(\u0027 \u0027.join(string_parts))"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def _get_microversion_header("},{"line_number":410,"context_line":"            self, microversion, service_type, endpoint_filter):"},{"line_number":411,"context_line":"        # We\u0027re converting it to normalized version number for two reasons."},{"line_number":412,"context_line":"        # First, to validate it\u0027s a real version number. Second, so that in"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_f717af50","line":409,"range":{"start_line":409,"start_character":8,"end_line":409,"end_character":32},"updated":"2017-07-14 20:33:23.000000000","message":"This may as well be static.  Or a util, for that matter.","commit_id":"d1bb847b79d947ae0c47a89f687ff7ed05de8aac"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"765c5894db9dc38e9ee6112dab5796adcc21876f","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"        logger.debug(\u0027 \u0027.join(string_parts))"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def _get_microversion_header("},{"line_number":410,"context_line":"            self, microversion, service_type, endpoint_filter):"},{"line_number":411,"context_line":"        # We\u0027re converting it to normalized version number for two reasons."},{"line_number":412,"context_line":"        # First, to validate it\u0027s a real version number. Second, so that in"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_7203ad10","line":409,"range":{"start_line":409,"start_character":8,"end_line":409,"end_character":32},"in_reply_to":"1f1a1f67_f717af50","updated":"2017-07-14 20:33:42.000000000","message":"Done","commit_id":"d1bb847b79d947ae0c47a89f687ff7ed05de8aac"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"40d3cac4e524822a8350aa204f19bdaa6712538e","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            # the server executed in the microversion we expected."},{"line_number":537,"context_line":"            # TODO(mordred) Validate that the requested microversion works"},{"line_number":538,"context_line":"            # with the microversion range we found in discovery."},{"line_number":539,"context_line":"            headers.setdefault(\u0027Openstack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":"            headers.setdefault(\u0027Vary\u0027, \u0027OpenStack-API-Version\u0027)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        if authenticated is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_f711efad","line":539,"range":{"start_line":539,"start_character":32,"end_line":539,"end_character":41},"updated":"2017-07-14 20:33:23.000000000","message":"OpenStack (CamelCase)","commit_id":"d1bb847b79d947ae0c47a89f687ff7ed05de8aac"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"765c5894db9dc38e9ee6112dab5796adcc21876f","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            # the server executed in the microversion we expected."},{"line_number":537,"context_line":"            # TODO(mordred) Validate that the requested microversion works"},{"line_number":538,"context_line":"            # with the microversion range we found in discovery."},{"line_number":539,"context_line":"            headers.setdefault(\u0027Openstack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":"            headers.setdefault(\u0027Vary\u0027, \u0027OpenStack-API-Version\u0027)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        if authenticated is None:"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_4d001402","line":539,"range":{"start_line":539,"start_character":32,"end_line":539,"end_character":41},"in_reply_to":"1f1a1f67_f711efad","updated":"2017-07-14 20:33:42.000000000","message":"Done","commit_id":"d1bb847b79d947ae0c47a89f687ff7ed05de8aac"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"40d3cac4e524822a8350aa204f19bdaa6712538e","unresolved":false,"context_lines":[{"line_number":537,"context_line":"            # TODO(mordred) Validate that the requested microversion works"},{"line_number":538,"context_line":"            # with the microversion range we found in discovery."},{"line_number":539,"context_line":"            headers.setdefault(\u0027Openstack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":"            headers.setdefault(\u0027Vary\u0027, \u0027OpenStack-API-Version\u0027)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        if authenticated is None:"},{"line_number":543,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_170fcb89","line":540,"range":{"start_line":540,"start_character":12,"end_line":540,"end_character":63},"updated":"2017-07-14 20:33:23.000000000","message":"I don\u0027t think this is supposed to be set on the request.  It\u0027s set in the response.\n\nhttp://specs.openstack.org/openstack/api-wg/guidelines/microversion_specification.html#client-interaction\nhttps://tools.ietf.org/html/rfc7231.html#section-7.1.4\nhttps://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary","commit_id":"d1bb847b79d947ae0c47a89f687ff7ed05de8aac"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"765c5894db9dc38e9ee6112dab5796adcc21876f","unresolved":false,"context_lines":[{"line_number":537,"context_line":"            # TODO(mordred) Validate that the requested microversion works"},{"line_number":538,"context_line":"            # with the microversion range we found in discovery."},{"line_number":539,"context_line":"            headers.setdefault(\u0027Openstack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":"            headers.setdefault(\u0027Vary\u0027, \u0027OpenStack-API-Version\u0027)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"        if authenticated is None:"},{"line_number":543,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1f1a1f67_2d03980f","line":540,"range":{"start_line":540,"start_character":12,"end_line":540,"end_character":63},"in_reply_to":"1f1a1f67_170fcb89","updated":"2017-07-14 20:33:42.000000000","message":"Done","commit_id":"d1bb847b79d947ae0c47a89f687ff7ed05de8aac"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e2c18162ff27d42d6ab906c4c2e562f82d74d408","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        :type logger: logging.Logger"},{"line_number":504,"context_line":"        :param dict allow: Extra filters to pass when discovering API"},{"line_number":505,"context_line":"                           versions. (optional)"},{"line_number":506,"context_line":"        :param microversion: Microversion to send for this request."},{"line_number":507,"context_line":"                       microversion can be given as a string or a tuple."},{"line_number":508,"context_line":"                       (optional)"},{"line_number":509,"context_line":"        :param str microversion_service_type: service_type to be send in the"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_f25d7de9","line":506,"updated":"2017-07-14 20:07:33.000000000","message":"Missing type of the docstring definition.","commit_id":"84c015ca24853c26bb7c06c624e8a96d1437b4b1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b6e0006599216593b194b3d59e7313953f5b3bf7","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        :type logger: logging.Logger"},{"line_number":504,"context_line":"        :param dict allow: Extra filters to pass when discovering API"},{"line_number":505,"context_line":"                           versions. (optional)"},{"line_number":506,"context_line":"        :param microversion: Microversion to send for this request."},{"line_number":507,"context_line":"                       microversion can be given as a string or a tuple."},{"line_number":508,"context_line":"                       (optional)"},{"line_number":509,"context_line":"        :param str microversion_service_type: service_type to be send in the"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_722a8d90","line":506,"in_reply_to":"1f1a1f67_f25d7de9","updated":"2017-07-14 20:33:51.000000000","message":"Yeaaahh, that\u0027s because it can be any of a number of different types.  See https://review.openstack.org/#/c/482746/7/keystoneauth1/discover.py@112","commit_id":"84c015ca24853c26bb7c06c624e8a96d1437b4b1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e2c18162ff27d42d6ab906c4c2e562f82d74d408","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        :param microversion: Microversion to send for this request."},{"line_number":507,"context_line":"                       microversion can be given as a string or a tuple."},{"line_number":508,"context_line":"                       (optional)"},{"line_number":509,"context_line":"        :param str microversion_service_type: service_type to be send in the"},{"line_number":510,"context_line":"                       microversion header, if a microversion is given."},{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_1210f900","line":509,"updated":"2017-07-14 20:07:33.000000000","message":"nit:\n\n  microversion_service_type: The service_type to be sent","commit_id":"84c015ca24853c26bb7c06c624e8a96d1437b4b1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b6e0006599216593b194b3d59e7313953f5b3bf7","unresolved":false,"context_lines":[{"line_number":506,"context_line":"        :param microversion: Microversion to send for this request."},{"line_number":507,"context_line":"                       microversion can be given as a string or a tuple."},{"line_number":508,"context_line":"                       (optional)"},{"line_number":509,"context_line":"        :param str microversion_service_type: service_type to be send in the"},{"line_number":510,"context_line":"                       microversion header, if a microversion is given."},{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_323535f8","line":509,"in_reply_to":"1f1a1f67_1210f900","updated":"2017-07-14 20:33:51.000000000","message":"Done","commit_id":"84c015ca24853c26bb7c06c624e8a96d1437b4b1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e2c18162ff27d42d6ab906c4c2e562f82d74d408","unresolved":false,"context_lines":[{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":513,"context_line":"                       does not have a service-type, microversion is given and"},{"line_number":514,"context_line":"                       microversion_service_type is not provided, the an"},{"line_number":515,"context_line":"                       exception will be raised."},{"line_number":516,"context_line":"        :param kwargs: any other parameter that can be passed to"},{"line_number":517,"context_line":"                       :meth:`requests.Session.request` (such as `headers`)."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_f2121d09","line":514,"updated":"2017-07-14 20:07:33.000000000","message":"s/the//","commit_id":"84c015ca24853c26bb7c06c624e8a96d1437b4b1"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"b6e0006599216593b194b3d59e7313953f5b3bf7","unresolved":false,"context_lines":[{"line_number":511,"context_line":"                       Defaults to the value of service_type from"},{"line_number":512,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":513,"context_line":"                       does not have a service-type, microversion is given and"},{"line_number":514,"context_line":"                       microversion_service_type is not provided, the an"},{"line_number":515,"context_line":"                       exception will be raised."},{"line_number":516,"context_line":"        :param kwargs: any other parameter that can be passed to"},{"line_number":517,"context_line":"                       :meth:`requests.Session.request` (such as `headers`)."}],"source_content_type":"text/x-python","patch_set":7,"id":"1f1a1f67_5232f111","line":514,"in_reply_to":"1f1a1f67_f2121d09","updated":"2017-07-14 20:33:51.000000000","message":"Done","commit_id":"84c015ca24853c26bb7c06c624e8a96d1437b4b1"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"97fbdf15e1ff2234414b08f0b00b882a67d32361","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            microversion_header \u003d self._get_microversion_header("},{"line_number":537,"context_line":"                microversion, microversion_service_type,"},{"line_number":538,"context_line":"                endpoint_filter)"},{"line_number":539,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        if authenticated is None:"},{"line_number":542,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_a4a8d5da","line":539,"updated":"2017-07-15 21:59:19.000000000","message":"This won\u0027t work on earlier releases of Nova, are we just accepting that as a fact of life?","commit_id":"c3cfde204dafb08d2e79987c7d9c1c8a50e3cdc2"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"279f9ce70339bd8580bc0e2d11c610c7faa2fce8","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            microversion_header \u003d self._get_microversion_header("},{"line_number":537,"context_line":"                microversion, microversion_service_type,"},{"line_number":538,"context_line":"                endpoint_filter)"},{"line_number":539,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        if authenticated is None:"},{"line_number":542,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_87ea5a0c","line":539,"in_reply_to":"1f1a1f67_297b67f5","updated":"2017-07-17 19:06:09.000000000","message":"Update coming in followup patch. We need os-service-types to be able to do it, which we add for service_type aliases.","commit_id":"c3cfde204dafb08d2e79987c7d9c1c8a50e3cdc2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"2a608869e0112e7d1bb0a4aff951e2aee2039f77","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            microversion_header \u003d self._get_microversion_header("},{"line_number":537,"context_line":"                microversion, microversion_service_type,"},{"line_number":538,"context_line":"                endpoint_filter)"},{"line_number":539,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        if authenticated is None:"},{"line_number":542,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_297b67f5","line":539,"in_reply_to":"1f1a1f67_49b3434e","updated":"2017-07-17 13:25:04.000000000","message":"That logic should be subsumed within _get_microversion_header, which should be renamed _set_microversion_header and accept/modify the headers dict.\n\nHopefully the service type is canonical at that point?","commit_id":"c3cfde204dafb08d2e79987c7d9c1c8a50e3cdc2"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"5f2fe91ea1cbbf5a5c139ae6f9163cfb250f69b0","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            microversion_header \u003d self._get_microversion_header("},{"line_number":537,"context_line":"                microversion, microversion_service_type,"},{"line_number":538,"context_line":"                endpoint_filter)"},{"line_number":539,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027, microversion_header)"},{"line_number":540,"context_line":""},{"line_number":541,"context_line":"        if authenticated is None:"},{"line_number":542,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1f1a1f67_49b3434e","line":539,"in_reply_to":"1f1a1f67_a4a8d5da","updated":"2017-07-17 13:15:20.000000000","message":"Agreed. This is going to be one of those cases where the code probably is going to have to be something like:\n\n   header_names \u003d mv_headers_for_service(microversion_service_type)\n   for h in header_names:\n       headers.setdefault(h, microversion_header)","commit_id":"c3cfde204dafb08d2e79987c7d9c1c8a50e3cdc2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"31a5c6940a0653cfd84ed7e8376d6f1e6036ea6e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    return session_obj"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def mv_headers_for_service(mv_service_type):"},{"line_number":70,"context_line":"    \"\"\"Workaround for services that predate standardization."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    TODO(sdague): eventually convert this to using os-service-types"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_3f92474d","line":69,"range":{"start_line":69,"start_character":4,"end_line":69,"end_character":26},"updated":"2017-07-18 16:21:45.000000000","message":"make it private","commit_id":"64a5cff30084c6cb6bcea27ed65335ba1a62333f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"059906ccb0af6f28b8b143a5ac376bdfa7b8ae86","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    return session_obj"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"def mv_headers_for_service(mv_service_type):"},{"line_number":70,"context_line":"    \"\"\"Workaround for services that predate standardization."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    TODO(sdague): eventually convert this to using os-service-types"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_3ae015cd","line":69,"range":{"start_line":69,"start_character":4,"end_line":69,"end_character":26},"in_reply_to":"1f1a1f67_3f92474d","updated":"2017-07-18 16:34:47.000000000","message":"++","commit_id":"64a5cff30084c6cb6bcea27ed65335ba1a62333f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"31a5c6940a0653cfd84ed7e8376d6f1e6036ea6e","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    if mv_service_type \u003d\u003d \"compute\":"},{"line_number":79,"context_line":"        headers.append(\"X-OpenStack-Nova-API-Version\")"},{"line_number":80,"context_line":"    elif mv_service_type \u003d\u003d \"baremetal\":"},{"line_number":81,"context_line":"        # Ironic does not yet support the new version"},{"line_number":82,"context_line":"        headers \u003d [\"X-OpenStack-Ironic-API-Version\"]"},{"line_number":83,"context_line":"    return headers"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_ffcf2f26","line":81,"range":{"start_line":81,"start_character":46,"end_line":81,"end_character":53},"updated":"2017-07-18 16:21:45.000000000","message":"header","commit_id":"64a5cff30084c6cb6bcea27ed65335ba1a62333f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"059906ccb0af6f28b8b143a5ac376bdfa7b8ae86","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    if mv_service_type \u003d\u003d \"compute\":"},{"line_number":79,"context_line":"        headers.append(\"X-OpenStack-Nova-API-Version\")"},{"line_number":80,"context_line":"    elif mv_service_type \u003d\u003d \"baremetal\":"},{"line_number":81,"context_line":"        # Ironic does not yet support the new version"},{"line_number":82,"context_line":"        headers \u003d [\"X-OpenStack-Ironic-API-Version\"]"},{"line_number":83,"context_line":"    return headers"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_fae5fddc","line":81,"range":{"start_line":81,"start_character":46,"end_line":81,"end_character":53},"in_reply_to":"1f1a1f67_ffcf2f26","updated":"2017-07-18 16:34:47.000000000","message":"++","commit_id":"64a5cff30084c6cb6bcea27ed65335ba1a62333f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"31a5c6940a0653cfd84ed7e8376d6f1e6036ea6e","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                endpoint_filter)"},{"line_number":556,"context_line":"            header_names \u003d mv_headers_for_service(microversion_service_type)"},{"line_number":557,"context_line":"            for h in header_names:"},{"line_number":558,"context_line":"                headers.setdefault(h, microversion_header)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        if authenticated is None:"},{"line_number":561,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_ff128f61","line":558,"range":{"start_line":558,"start_character":38,"end_line":558,"end_character":57},"updated":"2017-07-18 16:21:45.000000000","message":"This isn\u0027t right.  The header value with OpenStack-API-Version is \"{service} {microversion}\" whereas with X-OpenStack-{Nova|Ironic}-API-Version it\u0027s just the \"{microversion}\".\n\nWe should (still) subsume all of this logic within _get_microversion_header.","commit_id":"64a5cff30084c6cb6bcea27ed65335ba1a62333f"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"059906ccb0af6f28b8b143a5ac376bdfa7b8ae86","unresolved":false,"context_lines":[{"line_number":555,"context_line":"                endpoint_filter)"},{"line_number":556,"context_line":"            header_names \u003d mv_headers_for_service(microversion_service_type)"},{"line_number":557,"context_line":"            for h in header_names:"},{"line_number":558,"context_line":"                headers.setdefault(h, microversion_header)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        if authenticated is None:"},{"line_number":561,"context_line":"            authenticated \u003d bool(auth or self.auth)"}],"source_content_type":"text/x-python","patch_set":11,"id":"1f1a1f67_3a093595","line":558,"range":{"start_line":558,"start_character":38,"end_line":558,"end_character":57},"in_reply_to":"1f1a1f67_ff128f61","updated":"2017-07-18 16:34:47.000000000","message":"I agree the result is wrong for old ones.","commit_id":"64a5cff30084c6cb6bcea27ed65335ba1a62333f"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"280e7535be2db4d2f85feccee2a5a04742ba63a1","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    if mv_service_type \u003d\u003d \"compute\":"},{"line_number":79,"context_line":"        headers.append(\"X-OpenStack-Nova-API-Version\")"},{"line_number":80,"context_line":"    elif mv_service_type \u003d\u003d \"baremetal\":"},{"line_number":81,"context_line":"        # Ironic does not yet support the new version header"},{"line_number":82,"context_line":"        headers.append(\"X-OpenStack-Ironic-API-Version\")"},{"line_number":83,"context_line":"    return headers"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_e0b310e8","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":60},"updated":"2017-07-18 17:43:45.000000000","message":"This comment should go above L456 now.\n\nThough I\u0027m not loving having that logic live there rather than here.","commit_id":"00ad732957ac806bbea6075d7f864f3835f0ff18"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                    \" service_type information is available. Either provide a\""},{"line_number":445,"context_line":"                    \" service_type in endpoint_filter or pass\""},{"line_number":446,"context_line":"                    \" microversion_service_type as an argument.\".format("},{"line_number":447,"context_line":"                        microversion\u003ddiscover.version_to_string(microversion)))"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        # TODO(mordred) cinder uses volume in its microversion header. This"},{"line_number":450,"context_line":"        # logic should be handled in the future by os-service-types but for"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_f1d85f1e","line":447,"range":{"start_line":447,"start_character":37,"end_line":447,"end_character":77},"updated":"2017-07-19 15:08:20.000000000","message":"it\u0027s a string already. L437 did the version_to_string already.","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                    \" service_type information is available. Either provide a\""},{"line_number":445,"context_line":"                    \" service_type in endpoint_filter or pass\""},{"line_number":446,"context_line":"                    \" microversion_service_type as an argument.\".format("},{"line_number":447,"context_line":"                        microversion\u003ddiscover.version_to_string(microversion)))"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        # TODO(mordred) cinder uses volume in its microversion header. This"},{"line_number":450,"context_line":"        # logic should be handled in the future by os-service-types but for"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_8239dbf2","line":447,"range":{"start_line":447,"start_character":37,"end_line":447,"end_character":77},"in_reply_to":"1f1a1f67_f1d85f1e","updated":"2017-07-19 16:20:02.000000000","message":"Done","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f9bb9626801d3d4761bedd20b2822b7b478481ca","unresolved":false,"context_lines":[{"line_number":454,"context_line":"            service_type \u003d \u0027volume\u0027"},{"line_number":455,"context_line":"        # TODO(mordred) Fix this as part of the service-types generalized"},{"line_number":456,"context_line":"        # fix. Ironic does not yet support the new version header"},{"line_number":457,"context_line":"        if service_type !\u003d \u0027baremetal\u0027:"},{"line_number":458,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027,"},{"line_number":459,"context_line":"                               \u0027{service_type} {microversion}\u0027.format("},{"line_number":460,"context_line":"                                   service_type\u003dservice_type,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_3ed80079","line":457,"updated":"2017-07-18 21:11:17.000000000","message":"I don\u0027t think this is needed, the right header for ironic is set in _mv_legacy_headers_for_service and extra headers don\u0027t hurt anything as far as I know (same as how we\u0027re setting both headers for nova even though in early releases only one of them will work). But I guess it doesn\u0027t hurt to have it here.","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":454,"context_line":"            service_type \u003d \u0027volume\u0027"},{"line_number":455,"context_line":"        # TODO(mordred) Fix this as part of the service-types generalized"},{"line_number":456,"context_line":"        # fix. Ironic does not yet support the new version header"},{"line_number":457,"context_line":"        if service_type !\u003d \u0027baremetal\u0027:"},{"line_number":458,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027,"},{"line_number":459,"context_line":"                               \u0027{service_type} {microversion}\u0027.format("},{"line_number":460,"context_line":"                                   service_type\u003dservice_type,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_f1e29f9f","line":457,"in_reply_to":"1f1a1f67_3ed80079","updated":"2017-07-19 15:08:20.000000000","message":"++","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":454,"context_line":"            service_type \u003d \u0027volume\u0027"},{"line_number":455,"context_line":"        # TODO(mordred) Fix this as part of the service-types generalized"},{"line_number":456,"context_line":"        # fix. Ironic does not yet support the new version header"},{"line_number":457,"context_line":"        if service_type !\u003d \u0027baremetal\u0027:"},{"line_number":458,"context_line":"            headers.setdefault(\u0027OpenStack-API-Version\u0027,"},{"line_number":459,"context_line":"                               \u0027{service_type} {microversion}\u0027.format("},{"line_number":460,"context_line":"                                   service_type\u003dservice_type,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_bd2ab67b","line":457,"in_reply_to":"1f1a1f67_f1e29f9f","updated":"2017-07-19 16:20:02.000000000","message":"You know - I agree. Once we have os-service-types support we\u0027ll always be sending both headers because there\u0027s no way to know. I\u0027m going to remove it.","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":462,"context_line":"        header_names \u003d _mv_legacy_headers_for_service(service_type)"},{"line_number":463,"context_line":"        for h in header_names:"},{"line_number":464,"context_line":"            headers.setdefault(h, microversion)"},{"line_number":465,"context_line":"        return headers"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"    @positional()"},{"line_number":468,"context_line":"    def request(self, url, method, json\u003dNone, original_ip\u003dNone,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_7181efc2","line":465,"updated":"2017-07-19 15:08:20.000000000","message":"no need to return","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        :param str microversion_service_type: The service_type to be sent in"},{"line_number":547,"context_line":"                       the microversion header, if a microversion is given."},{"line_number":548,"context_line":"                       Defaults to the value of service_type from"},{"line_number":549,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":550,"context_line":"                       does not have a service_type, microversion is given and"},{"line_number":551,"context_line":"                       microversion_service_type is not provided, an exception"},{"line_number":552,"context_line":"                       will be raised."},{"line_number":553,"context_line":"        :param kwargs: any other parameter that can be passed to"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_d1be83ac","line":550,"range":{"start_line":549,"start_character":54,"end_line":550,"end_character":51},"updated":"2017-07-19 15:08:20.000000000","message":"or is not provided","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":546,"context_line":"        :param str microversion_service_type: The service_type to be sent in"},{"line_number":547,"context_line":"                       the microversion header, if a microversion is given."},{"line_number":548,"context_line":"                       Defaults to the value of service_type from"},{"line_number":549,"context_line":"                       endpoint_filter if one exists. If endpoint_filter"},{"line_number":550,"context_line":"                       does not have a service_type, microversion is given and"},{"line_number":551,"context_line":"                       microversion_service_type is not provided, an exception"},{"line_number":552,"context_line":"                       will be raised."},{"line_number":553,"context_line":"        :param kwargs: any other parameter that can be passed to"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_bdd4f648","line":550,"range":{"start_line":549,"start_character":54,"end_line":550,"end_character":51},"in_reply_to":"1f1a1f67_d1be83ac","updated":"2017-07-19 16:20:02.000000000","message":"Done","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"}],"keystoneauth1/tests/unit/test_session.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"280e7535be2db4d2f85feccee2a5a04742ba63a1","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        resp \u003d session.get(self.TEST_URL)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"        self.assertTrue(resp.ok)"},{"line_number":176,"context_line":"        self.assertRequestNotInHeader(\u0027Openstack-API-Version\u0027)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        session \u003d client_session.Session()"},{"line_number":179,"context_line":"        self.stub_url(\u0027GET\u0027, text\u003d\u0027response\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_807fbca9","line":176,"range":{"start_line":176,"start_character":43,"end_line":176,"end_character":44},"updated":"2017-07-18 17:43:45.000000000","message":"S (uppercase) (yeah, mahbad)","commit_id":"00ad732957ac806bbea6075d7f864f3835f0ff18"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":128,"context_line":"        client_session.Session._set_microversion_headers("},{"line_number":129,"context_line":"            headers, \u00272.30\u0027, \u0027baremetal\u0027, None)"},{"line_number":130,"context_line":"        self.assertEqual(headers[\u0027X-OpenStack-Ironic-API-Version\u0027], \u00272.30\u0027)"},{"line_number":131,"context_line":"        self.assertEqual(len(headers.keys()), 1)"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"        # volumev2 service-type - volume microversion"},{"line_number":134,"context_line":"        headers \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_11af5b2a","line":131,"updated":"2017-07-19 15:08:20.000000000","message":"No X-OpenStack-API-Version, cool.","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        headers \u003d {}"},{"line_number":135,"context_line":"        client_session.Session._set_microversion_headers("},{"line_number":136,"context_line":"            headers, (2, 30), None, {\u0027service_type\u0027: \u0027volumev2\u0027})"},{"line_number":137,"context_line":"        self.assertEqual(headers[\u0027OpenStack-API-Version\u0027], \u0027volume 2.30\u0027)"},{"line_number":138,"context_line":"        self.assertEqual(len(headers.keys()), 1)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # block-storage service-type - volume microversion"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_2c3c3e2d","line":137,"range":{"start_line":137,"start_character":60,"end_line":137,"end_character":66},"updated":"2017-07-19 15:08:20.000000000","message":"http://specs.openstack.org/openstack/service-types-authority/ says the type is block-storage while volume is just an alias\n\nI am surprised we use volume as the official type name. should we fix that ^ document ?","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        headers \u003d {}"},{"line_number":135,"context_line":"        client_session.Session._set_microversion_headers("},{"line_number":136,"context_line":"            headers, (2, 30), None, {\u0027service_type\u0027: \u0027volumev2\u0027})"},{"line_number":137,"context_line":"        self.assertEqual(headers[\u0027OpenStack-API-Version\u0027], \u0027volume 2.30\u0027)"},{"line_number":138,"context_line":"        self.assertEqual(len(headers.keys()), 1)"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"        # block-storage service-type - volume microversion"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_fd526edd","line":137,"range":{"start_line":137,"start_character":60,"end_line":137,"end_character":66},"in_reply_to":"1f1a1f67_2c3c3e2d","updated":"2017-07-19 16:20:02.000000000","message":"We need to fix cinder to accept block-storage in their microversion header. When we pull in os-service-types, we\u0027ll send all of the aliases in the header so that we make sure to send the right one.","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        self.assertEqual(headers[\u0027OpenStack-API-Version\u0027], \u0027volume 2.30\u0027)"},{"line_number":145,"context_line":"        self.assertEqual(len(headers.keys()), 1)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        # Headers already exist - no change"},{"line_number":148,"context_line":"        headers \u003d {"},{"line_number":149,"context_line":"            \u0027OpenStack-API-Version\u0027: \u0027compute 2.30\u0027,"},{"line_number":150,"context_line":"            \u0027X-OpenStack-Nova-API-Version\u0027: \u00272.30\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_d1a4434d","line":147,"updated":"2017-07-19 15:08:20.000000000","message":"nice","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                           endpoint_filter\u003d{\u0027endpoint\u0027: \u0027filter\u0027})"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        self.assertTrue(resp.ok)"},{"line_number":185,"context_line":"        self.assertRequestHeaderEqual(\u0027OpenStack-API-Version\u0027, \u0027compute 2.30\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_user_agent(self):"},{"line_number":188,"context_line":"        session \u003d client_session.Session()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_513cb3df","line":185,"updated":"2017-07-19 15:08:20.000000000","message":"Additionally assert X-OpenStack-Nova-API-Version too, just to make sure!","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                           endpoint_filter\u003d{\u0027endpoint\u0027: \u0027filter\u0027})"},{"line_number":183,"context_line":""},{"line_number":184,"context_line":"        self.assertTrue(resp.ok)"},{"line_number":185,"context_line":"        self.assertRequestHeaderEqual(\u0027OpenStack-API-Version\u0027, \u0027compute 2.30\u0027)"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"    def test_user_agent(self):"},{"line_number":188,"context_line":"        session \u003d client_session.Session()"}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_7d589ef8","line":185,"in_reply_to":"1f1a1f67_513cb3df","updated":"2017-07-19 16:20:02.000000000","message":"Done","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"bde86ba3165ff33e5d6c8e1bf62b64adea385499","unresolved":false,"context_lines":[{"line_number":1358,"context_line":"        last_token \u003d self.requests_mock.last_request.headers[\u0027X-Auth-Token\u0027]"},{"line_number":1359,"context_line":"        self.assertEqual(token, last_token)"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    def test_default_microversion(self):"},{"line_number":1362,"context_line":"        sess \u003d client_session.Session()"},{"line_number":1363,"context_line":"        url \u003d \u0027http://url\u0027"},{"line_number":1364,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_f105ff14","line":1361,"updated":"2017-07-19 15:08:20.000000000","message":"this test is awesome","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5d839c9847772d22e35592c34ce1bd5fdec09908","unresolved":false,"context_lines":[{"line_number":1358,"context_line":"        last_token \u003d self.requests_mock.last_request.headers[\u0027X-Auth-Token\u0027]"},{"line_number":1359,"context_line":"        self.assertEqual(token, last_token)"},{"line_number":1360,"context_line":""},{"line_number":1361,"context_line":"    def test_default_microversion(self):"},{"line_number":1362,"context_line":"        sess \u003d client_session.Session()"},{"line_number":1363,"context_line":"        url \u003d \u0027http://url\u0027"},{"line_number":1364,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1f1a1f67_fd6b8e81","line":1361,"in_reply_to":"1f1a1f67_f105ff14","updated":"2017-07-19 16:20:02.000000000","message":"\\o/","commit_id":"218adc333efe0cea8f01ee11666e53f4c33d8aeb"}],"keystoneauth1/tests/unit/utils.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"280e7535be2db4d2f85feccee2a5a04742ba63a1","unresolved":false,"context_lines":[{"line_number":101,"context_line":"            self.assertIn(k, qs)"},{"line_number":102,"context_line":"            self.assertIn(v, qs[k])"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    def assertRequestHeaderEqual(self, name, val):"},{"line_number":105,"context_line":"        \"\"\"Verify that the last request made contains a header and its value."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        The request must have already been made."},{"line_number":108,"context_line":"        \"\"\""},{"line_number":109,"context_line":"        headers \u003d self.requests_mock.last_request.headers"},{"line_number":110,"context_line":"        self.assertEqual(headers.get(name), val)"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    def assertRequestNotInHeader(self, name):"},{"line_number":113,"context_line":"        \"\"\"Verify that the last request made does not contain a header key."},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"        The request must have already been made."},{"line_number":116,"context_line":"        \"\"\""},{"line_number":117,"context_line":"        headers \u003d self.requests_mock.last_request.headers"},{"line_number":118,"context_line":"        self.assertNotIn(name, headers)"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"class TestResponse(requests.Response):"},{"line_number":122,"context_line":"    \"\"\"Class used to wrap requests.Response."}],"source_content_type":"text/x-python","patch_set":12,"id":"1f1a1f67_2020e8ab","line":119,"range":{"start_line":104,"start_character":0,"end_line":119,"end_character":0},"updated":"2017-07-18 17:43:45.000000000","message":"May want to consider making the keys case insensitive here.  But meh.","commit_id":"00ad732957ac806bbea6075d7f864f3835f0ff18"}]}
