)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"1bdc3eeeea4dcf25b389a4207d3d37ac7bb7602e","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"A new parameter is introduced into tempest.conf:"},{"line_number":18,"context_line":" * profiler.key - the key used to enable OSProfiler (should"},{"line_number":19,"context_line":"     match the one configured in OpenStack services)"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: I64f30c36adbf7fb26609142f22d3e305ac9e82b5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"df87a7cf_8d5ea4e7","line":19,"updated":"2017-12-13 03:21:18.000000000","message":"Could you add a releasenote for this parameter?","commit_id":"749fc9517e52ec9b2447babb855c8a4de03be0d8"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"82e7ce03ec078b320db72dfe340ddf1dacbb0d73","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":" 2. Run all Tempest tests or select some, e.g.:"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"   tempest run --regex tempest.api.network.test_networks.NetworksTest.test_list_networks*"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: I64f30c36adbf7fb26609142f22d3e305ac9e82b5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bf8cb3f7_d87d43e8","line":29,"updated":"2017-12-21 02:53:41.000000000","message":"Oh, I think it\u0027s good to have this instruction in a Tempest docs, too. (Maybe, in README.rst?)","commit_id":"93156c5d383514ba67bcf9add68d32b57e754e5d"}],"releasenotes/notes/add-profiler-config-options-db7c4ae6d338ee5c.yaml":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"112fb2d6bdccc4b1f0c0fe6f83471205b4cbb965","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add support of OSProfiler library for tracing and profiling OpenStack."},{"line_number":5,"context_line":"    A new config option ``key`` in section ``profiler`` is added, the option"},{"line_number":6,"context_line":"    sets the secret key used to enable profiling in OpenStack services."},{"line_number":7,"context_line":"    The value needs to correspond to value specified in [profiler]/hmac_keys"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1f769fc5_c01213b2","line":4,"range":{"start_line":4,"start_character":19,"end_line":4,"end_character":29},"updated":"2018-12-28 02:17:29.000000000","message":"Could you add the link to OSProfiler to understand it easily like\n\n ... of OSProfiler [1] library for ...\n\n [1]: https://git.openstack.org/openstack/osprofiler","commit_id":"9e187e70cbedf9750b679e8cbeea386f29876ef6"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"76a94df753a9c3ce4133d9af07ddab2eeb3a2816","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add support of OSProfiler library for tracing and profiling OpenStack."},{"line_number":5,"context_line":"    A new config option ``key`` in section ``profiler`` is added, the option"},{"line_number":6,"context_line":"    sets the secret key used to enable profiling in OpenStack services."},{"line_number":7,"context_line":"    The value needs to correspond to value specified in [profiler]/hmac_keys"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9fdfeff1_132e708b","line":4,"range":{"start_line":4,"start_character":19,"end_line":4,"end_character":29},"in_reply_to":"1f769fc5_c01213b2","updated":"2019-02-15 16:56:58.000000000","message":"Done","commit_id":"9e187e70cbedf9750b679e8cbeea386f29876ef6"}],"tempest/config.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"112fb2d6bdccc4b1f0c0fe6f83471205b4cbb965","unresolved":false,"context_lines":[{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"ProfilerGroup \u003d ["},{"line_number":1073,"context_line":"    cfg.StrOpt(\u0027key\u0027,"},{"line_number":1074,"context_line":"               help\u003d\"OSProfiler secret key. To enable profiling the key \""},{"line_number":1075,"context_line":"                    \"should match one configured in OpenStack services\"),"},{"line_number":1076,"context_line":"]"},{"line_number":1077,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1f769fc5_0067ab4f","line":1074,"updated":"2018-12-28 02:17:29.000000000","message":"This option seems for enabling OSProfiler also, so it is better to write it clearly on the help message.\nAlso nice to write the default value doesn\u0027t enable the profiler.","commit_id":"9e187e70cbedf9750b679e8cbeea386f29876ef6"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"76a94df753a9c3ce4133d9af07ddab2eeb3a2816","unresolved":false,"context_lines":[{"line_number":1071,"context_line":""},{"line_number":1072,"context_line":"ProfilerGroup \u003d ["},{"line_number":1073,"context_line":"    cfg.StrOpt(\u0027key\u0027,"},{"line_number":1074,"context_line":"               help\u003d\"OSProfiler secret key. To enable profiling the key \""},{"line_number":1075,"context_line":"                    \"should match one configured in OpenStack services\"),"},{"line_number":1076,"context_line":"]"},{"line_number":1077,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_b34e846c","line":1074,"in_reply_to":"1f769fc5_0067ab4f","updated":"2019-02-15 16:56:58.000000000","message":"Done","commit_id":"9e187e70cbedf9750b679e8cbeea386f29876ef6"}],"tempest/lib/common/profiler.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c7596828cefb490bdf5b8a280a39f070afdf0925","unresolved":false,"context_lines":[{"line_number":35,"context_line":"def disable():"},{"line_number":36,"context_line":"    \"\"\"Disable global profiler instance\"\"\""},{"line_number":37,"context_line":"    _profiler.clear()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def get():"},{"line_number":41,"context_line":"    \"\"\"Get global profiler instance\"\"\""},{"line_number":42,"context_line":"    return _profiler"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def serialize_as_http_headers():"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_202275a4","line":42,"range":{"start_line":38,"start_character":0,"end_line":42,"end_character":20},"updated":"2018-09-17 21:38:56.000000000","message":"This method is used in this module only, how about removing it and use _profiler directly in sirialize_as_http_headers() for simple code?","commit_id":"0948400f5d1fb4f2114af229fb737f3b247c7d61"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"3c0a94282278800b829aba0d1c0b666363c0577d","unresolved":false,"context_lines":[{"line_number":35,"context_line":"def disable():"},{"line_number":36,"context_line":"    \"\"\"Disable global profiler instance\"\"\""},{"line_number":37,"context_line":"    _profiler.clear()"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def get():"},{"line_number":41,"context_line":"    \"\"\"Get global profiler instance\"\"\""},{"line_number":42,"context_line":"    return _profiler"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def serialize_as_http_headers():"}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_416e1398","line":42,"range":{"start_line":38,"start_character":0,"end_line":42,"end_character":20},"in_reply_to":"3f79a3b5_202275a4","updated":"2018-10-05 15:57:21.000000000","message":"The idea is to hide profiler instance inside private variable and access it via api similar to the one from osprofiler. It\u0027s more a question of style though..","commit_id":"0948400f5d1fb4f2114af229fb737f3b247c7d61"},{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"9225b40ee7f0f53d5617d351e2fc548236caf38a","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    trace_hmac \u003d _sign(trace_info, p[\u0027key\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027X-Trace-Info\u0027: trace_info,"},{"line_number":57,"context_line":"        \u0027X-Trace-HMAC\u0027: trace_hmac,"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_8e35ccdd","line":56,"updated":"2018-10-11 08:00:11.000000000","message":"These falls into the entity header category, which might have  effect on swift calls.\nNeeds to be checked..","commit_id":"4174e71e905057682d4a35238d0fdf18a85548a0"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"af9f845fffcd0d3c5bb0b7174a49eefa3981c9a0","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    trace_hmac \u003d _sign(trace_info, p[\u0027key\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027X-Trace-Info\u0027: trace_info,"},{"line_number":57,"context_line":"        \u0027X-Trace-HMAC\u0027: trace_hmac,"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_f4a79450","line":56,"in_reply_to":"3f79a3b5_65eaad0e","updated":"2018-10-22 15:35:08.000000000","message":"All Swift tests passed with profiling on: http://logs.openstack.org/59/609959/3/check/tempest-full-profiler-enabled/6204513/testr_results.html.gz","commit_id":"4174e71e905057682d4a35238d0fdf18a85548a0"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"286a5c50b551b9825ad002645fec0965131b59f6","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    trace_hmac \u003d _sign(trace_info, p[\u0027key\u0027])"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    return {"},{"line_number":56,"context_line":"        \u0027X-Trace-Info\u0027: trace_info,"},{"line_number":57,"context_line":"        \u0027X-Trace-HMAC\u0027: trace_hmac,"},{"line_number":58,"context_line":"    }"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_65eaad0e","line":56,"in_reply_to":"3f79a3b5_8e35ccdd","updated":"2018-10-12 11:46:36.000000000","message":"Is it sufficient to run full Tempest tests (e.g. tempest-full job)? Right now it passes with this patch, and I also plan to check if it succeed with enabled profiler.","commit_id":"4174e71e905057682d4a35238d0fdf18a85548a0"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"112fb2d6bdccc4b1f0c0fe6f83471205b4cbb965","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f769fc5_80697b26","line":1,"updated":"2018-12-28 02:17:29.000000000","message":"Could you move this profiler file to tempest/common instead of tempest/lib/common ?\nThe path tempest/lib is defined as tempest library path which should be stable for the other projects\u0027 usage.\nThis is not for that at this time, so it is better to put the file outside of tempest/lib.","commit_id":"9e187e70cbedf9750b679e8cbeea386f29876ef6"},{"author":{"_account_id":5950,"name":"Ilya Shakhat","email":"shakhat@gmail.com","username":"shakhat"},"change_message_id":"76a94df753a9c3ce4133d9af07ddab2eeb3a2816","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"9fdfeff1_b39c44c0","line":1,"in_reply_to":"1f769fc5_80697b26","updated":"2019-02-15 16:56:58.000000000","message":"Looks like I cannot move profiler to tempest/common because it is imported from tempest/lib/common/rest_client:\n\n./tempest/lib/common/rest_client.py:28:1: T112  tempest.lib should not import local tempest code to avoid circular dependency\nfrom tempest.common import profiler\n^\n\n(output from pep8 job)","commit_id":"9e187e70cbedf9750b679e8cbeea386f29876ef6"}],"tempest/lib/common/rest_client.py":[{"author":{"_account_id":5803,"name":"Attila Fazekas","email":"afazekas@redhat.com","username":"afazekas"},"change_message_id":"7eff2e41e3b2d58bee90e5cf9be958c96ee53a23","unresolved":false,"context_lines":[{"line_number":133,"context_line":"            send_type \u003d \u0027json\u0027"},{"line_number":134,"context_line":"        headers \u003d {\u0027Content-Type\u0027: \u0027application/%s\u0027 % send_type,"},{"line_number":135,"context_line":"                   \u0027Accept\u0027: \u0027application/%s\u0027 % accept_type}"},{"line_number":136,"context_line":"        headers.update(profiler.serialize_as_http_headers())"},{"line_number":137,"context_line":"        return headers"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_6e915053","line":136,"updated":"2018-10-11 08:18:44.000000000","message":"https://github.com/openstack/tempest/blob/master/tempest/lib/services/object_storage/object_client.py#L34\n\nSwift test might not work well if we add extra (non const) headers.","commit_id":"4174e71e905057682d4a35238d0fdf18a85548a0"}]}
