)]}'
{"specs/kilo/osprofiler-cross-service-project-profiling.rst":[{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7bc2284a83174275f4a7e6d27adaeaa7322730cc","unresolved":false,"context_lines":[{"line_number":2,"context_line":" OSprofiler cross service \u0026 project profiling"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/oslo/+spec/osprofiler-cross-service-project-profiling"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Based on oslo spec: "}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_7ce37a33","line":5,"updated":"2014-12-18 18:14:58.000000000","message":"This should go in the osprofiler launchpad project instead of Oslo.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":2,"context_line":" OSprofiler cross service \u0026 project profiling"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/oslo/+spec/osprofiler-cross-service-project-profiling"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Based on oslo spec: "}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_1ddd9814","line":5,"in_reply_to":"3a961159_7ce37a33","updated":"2015-01-06 21:13:15.000000000","message":"Done","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"388c42bb4e4e68fda6cf5c9de73aebc1bf557083","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  all involved services, and builds a tree of calls (see an"},{"line_number":28,"context_line":"  `example \u003chttp://boris-42.github.io/profiler/\u003e`_)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"* Why not cProfile and etc?"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"  **The scope of this library is quite different:**"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a890539_f335d6a8","line":30,"updated":"2014-11-28 11:22:10.000000000","message":"This could move to the Alternatives section","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":27,"context_line":"  all involved services, and builds a tree of calls (see an"},{"line_number":28,"context_line":"  `example \u003chttp://boris-42.github.io/profiler/\u003e`_)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"* Why not cProfile and etc?"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"  **The scope of this library is quite different:**"},{"line_number":33,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_fdbc4cb7","line":30,"in_reply_to":"5a890539_f335d6a8","updated":"2015-01-06 21:13:15.000000000","message":"Done","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7bc2284a83174275f4a7e6d27adaeaa7322730cc","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        Actually the algorithm is a bit more complex. The Python client will"},{"line_number":111,"context_line":"        also sign the trace info with a HMAC key passed to profiler.init,"},{"line_number":112,"context_line":"        and on reception the WSGI middleware will check that it\u0027s signed with"},{"line_number":113,"context_line":"        the **same** HMAC key that is specified in api-paste.ini. This ensures"},{"line_number":114,"context_line":"        that only the user that knows the HMAC key in api-paste.ini can init"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_3a07e81e","line":111,"updated":"2014-12-18 18:14:58.000000000","message":"How will the client get access to that value?","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        Actually the algorithm is a bit more complex. The Python client will"},{"line_number":111,"context_line":"        also sign the trace info with a HMAC key passed to profiler.init,"},{"line_number":112,"context_line":"        and on reception the WSGI middleware will check that it\u0027s signed with"},{"line_number":113,"context_line":"        the **same** HMAC key that is specified in api-paste.ini. This ensures"},{"line_number":114,"context_line":"        that only the user that knows the HMAC key in api-paste.ini can init"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_ddd6b0f1","line":111,"in_reply_to":"3a961159_3a07e81e","updated":"2015-01-06 21:13:15.000000000","message":"User has to specify it via CLI argument or osprofiler.init()","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"388c42bb4e4e68fda6cf5c9de73aebc1bf557083","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Alternatives"},{"line_number":160,"context_line":"------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"None."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Impact on Existing APIs"},{"line_number":165,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a890539_933c92c1","line":162,"updated":"2014-11-28 11:22:10.000000000","message":"Are there really no alternatives (like attaching Python processes to debuggers/monitors) ? I\u0027m not necessarily looking for good ones, but this chapter is generally useful to compare the solution with other techniques and show why this approach is superior.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":159,"context_line":"Alternatives"},{"line_number":160,"context_line":"------------"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"None."},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"Impact on Existing APIs"},{"line_number":165,"context_line":"-----------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_fdea8c9e","line":162,"in_reply_to":"5a890539_933c92c1","updated":"2015-01-06 21:13:15.000000000","message":"There is no alternatives because it\u0027s all about integration with OpenStack Services.\n\nBtw there is article about profiling (and 1 of observed approach is  this one that I am using in OSprofiler)","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7bc2284a83174275f4a7e6d27adaeaa7322730cc","unresolved":false,"context_lines":[{"line_number":165,"context_line":"-----------------------"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"* All API methods of all projects will accept 2 new headers:"},{"line_number":168,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":171,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_7ae09096","line":168,"updated":"2014-12-18 18:14:58.000000000","message":"Do the API endpoints need to actually do anything with those headers, or will it be handled transparently by the middleware?","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":165,"context_line":"-----------------------"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"* All API methods of all projects will accept 2 new headers:"},{"line_number":168,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":171,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_7d369c52","line":168,"in_reply_to":"3a961159_7ae09096","updated":"2015-01-06 21:13:15.000000000","message":"transparently","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7bc2284a83174275f4a7e6d27adaeaa7322730cc","unresolved":false,"context_lines":[{"line_number":168,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":171,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_7af7b059","line":171,"updated":"2014-12-18 18:14:58.000000000","message":"How will the client calls embedded in the services (like when nova calls neutron) know what values to use for the headers and know to include the new headers?","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":168,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":171,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"Security impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_3d7ed4e4","line":171,"in_reply_to":"3a961159_7af7b059","updated":"2015-01-06 21:13:15.000000000","message":"osprofiler is lib (that is shared between code of project and client that is imported in this code) \n\nSo global variable that stores trace information is common \u003d\u003e that how clients know.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7bc2284a83174275f4a7e6d27adaeaa7322730cc","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":182,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"},{"line_number":183,"context_line":"users. Furthermore, attacker is not able to fetch profiling data."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_fab9e079","line":183,"updated":"2014-12-18 18:14:58.000000000","message":"Is there a possible denial-of-service vector if an attacker enables profiling repeatedly on many requests and causes either superfluous notifications or extra data to be accumulated in ceilometer?","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":180,"context_line":""},{"line_number":181,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":182,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"},{"line_number":183,"context_line":"users. Furthermore, attacker is not able to fetch profiling data."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_3df33474","line":183,"in_reply_to":"3a961159_fab9e079","updated":"2015-01-06 21:13:15.000000000","message":"Yep if somehow person gets HMAC he will be able to generate some amount of traffic to Ceilometer. Most requests (except such like booting VM) don\u0027t generate too much traffic. So if rate limits for API are set properly big damage can be avoided.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"388c42bb4e4e68fda6cf5c9de73aebc1bf557083","unresolved":false,"context_lines":[{"line_number":187,"context_line":"------------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* If it is turned off there is NO performance overhead."},{"line_number":190,"context_line":"  Just couple of \"if None\" checks"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* If it is turned on, there are two different cases:"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a890539_f380764b","line":190,"updated":"2014-11-28 11:22:10.000000000","message":"The \"Just couple...\" sentence introduces doubt here. Is it \"NO\" (as in zero), or \"no significant\" ? Wouldn\u0027t the config option still be tested for every call (i.e. not optimized out in pyc generation) and therefore result in a (I suspect very small) overhead ?","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":187,"context_line":"------------------"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"* If it is turned off there is NO performance overhead."},{"line_number":190,"context_line":"  Just couple of \"if None\" checks"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* If it is turned on, there are two different cases:"},{"line_number":193,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_5de480a7","line":190,"in_reply_to":"5a890539_f380764b","updated":"2015-01-06 21:13:15.000000000","message":"rephrased.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"388c42bb4e4e68fda6cf5c9de73aebc1bf557083","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* If it is turned on, there are two different cases:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"  * No trace headers in request \u003d\u003e No performance impact"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"  * There is trace header:"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a890539_f3e79644","line":194,"updated":"2014-11-28 11:22:10.000000000","message":"Same question here. \"No\" seems a bit too absolute.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":191,"context_line":""},{"line_number":192,"context_line":"* If it is turned on, there are two different cases:"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"  * No trace headers in request \u003d\u003e No performance impact"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"  * There is trace header:"},{"line_number":197,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_fdf44c56","line":194,"in_reply_to":"5a890539_f3e79644","updated":"2015-01-06 21:13:15.000000000","message":"But few \"IF not None\" - is NO impact imho","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":308,"name":"Thierry Carrez","email":"thierry@openstack.org","username":"ttx"},"change_message_id":"388c42bb4e4e68fda6cf5c9de73aebc1bf557083","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    * Trace id is singed with proper HMAC, overhead will depend on amount of"},{"line_number":202,"context_line":"      trace points and Notification API performance. For requests like"},{"line_number":203,"context_line":"      booting VM, creating Volumes it can be measurable, for simple requests"},{"line_number":204,"context_line":"      like showing details about resource it will be insignificant."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Configuration Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"5a890539_b3e50e3a","line":204,"updated":"2014-11-28 11:22:10.000000000","message":"Could you give examples with numbers from on a real call ?","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":201,"context_line":"    * Trace id is singed with proper HMAC, overhead will depend on amount of"},{"line_number":202,"context_line":"      trace points and Notification API performance. For requests like"},{"line_number":203,"context_line":"      booting VM, creating Volumes it can be measurable, for simple requests"},{"line_number":204,"context_line":"      like showing details about resource it will be insignificant."},{"line_number":205,"context_line":""},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"Configuration Impact"}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_1d9598e3","line":204,"in_reply_to":"5a890539_b3e50e3a","updated":"2015-01-06 21:13:15.000000000","message":"Yep I can generate it (I\u0027ll do)","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"7bc2284a83174275f4a7e6d27adaeaa7322730cc","unresolved":false,"context_lines":[{"line_number":207,"context_line":"Configuration Impact"},{"line_number":208,"context_line":"--------------------"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"We are adding to all projects new CONF group options:"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"[profiler]"},{"line_number":213,"context_line":"#If False fully disable profiling feature."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_d5579500","line":210,"updated":"2014-12-18 18:14:58.000000000","message":"Why is this option being defined inside the application, instead of inside the library? We\u0027ve already had issues with different option names being used in different applications as a result.","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"9bf23ba07b7fce3b42acab53543e29d9b265bfe1","unresolved":false,"context_lines":[{"line_number":207,"context_line":"Configuration Impact"},{"line_number":208,"context_line":"--------------------"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"We are adding to all projects new CONF group options:"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"[profiler]"},{"line_number":213,"context_line":"#If False fully disable profiling feature."}],"source_content_type":"text/x-rst","patch_set":1,"id":"3a961159_bdac8436","line":210,"in_reply_to":"3a961159_d5579500","updated":"2015-01-06 21:13:15.000000000","message":"Actually this is good point to discuss .","commit_id":"79454c2bfdf615aa8dfd49a4db9934d474d5245f"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":2,"context_line":" OSprofiler cross service \u0026 project profiling"},{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"https://blueprints.launchpad.net/osprofiler/+spec/intergate-it-in-openstack"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"Based on oslo spec:"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_1ee3bc34","line":5,"updated":"2015-01-07 13:34:42.000000000","message":"\"integrate\"\n\nI suppose it\u0027s a bit late now; although there\u0027s nothing significant against the BP yet so you could make a new one?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"85cdb1d0346dcb7e419e48ae95bcfd0335228bd0","unresolved":false,"context_lines":[{"line_number":19,"context_line":"  of multiple services. To process some request, e.g. to boot a virtual"},{"line_number":20,"context_line":"  machine, OpenStack uses multiple services from different projects. In the"},{"line_number":21,"context_line":"  case something works too slowly, it\u0027s extremely complicated to understand"},{"line_number":22,"context_line":"  what exactly goes wrong and to locate the bottleneck."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  To resolve this issue, we introduce a tiny but powerful library,"},{"line_number":25,"context_line":"  **osprofiler**, that is going to be used by all OpenStack projects and their"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_e7ecbdbe","line":22,"updated":"2015-01-15 11:21:13.000000000","message":"Agreed. I think this is why we need to make sure the request-ids flow between all openstack systems, so we can track things between different systems.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  **osprofiler**, that is going to be used by all OpenStack projects and their"},{"line_number":26,"context_line":"  python clients. To be able to generate 1 trace per request, that goes through"},{"line_number":27,"context_line":"  all involved services, and builds a tree of calls (see an"},{"line_number":28,"context_line":"  `example \u003chttp://boris-42.github.io/profiler/\u003e`_)."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"* For more details about how exactly OSprofiler works take a look at"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_4389ef6d","line":28,"updated":"2015-01-07 13:34:42.000000000","message":"I can\u0027t help but notice there\u0027s a massive missing timeslice in the middle. What is that please?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"85cdb1d0346dcb7e419e48ae95bcfd0335228bd0","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"  * There is an OpenStack API in Ceilometer that allows us to retrieve all"},{"line_number":48,"context_line":"    messages related to one trace. Take a look at"},{"line_number":49,"context_line":"    *osprofiler.parsers.ceilometer:get_notifications*"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* **How to setup profiler notifier?**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_07a5499e","line":49,"updated":"2015-01-15 11:21:13.000000000","message":"I think just saying its plug-able, and we start with ceilometer makes sense. Monasca might want to plug in here at some point.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"* **How to setup profiler notifier?**"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"  We decided to use olso.messaging Notifier API, because:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"  * oslo.messaging is integrated in all projects"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_c3cb1fa2","line":54,"updated":"2015-01-07 13:34:42.000000000","message":"nit: oslo","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    To enable cross service profiling we actually need to do send from caller"},{"line_number":67,"context_line":"    to callee (base_id \u0026 trace_id). So callee will be able to init its profiler"},{"line_number":68,"context_line":"    with these values."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    In case of OpenStack there are 2 kinds of interaction between 2 services:"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_8363d7af","line":68,"updated":"2015-01-07 13:34:42.000000000","message":"Better English which I think says what you meant:\n\nTo enable cross-service profiling we need to pass a base_id and trace_id down through the stack. This allows each reporter to provide these in the Ceilometer notification it sends, allowing the notifications to be collated.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":67,"context_line":"    to callee (base_id \u0026 trace_id). So callee will be able to init its profiler"},{"line_number":68,"context_line":"    with these values."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    In case of OpenStack there are 2 kinds of interaction between 2 services:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    * REST API"},{"line_number":73,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_632c2b4b","line":70,"updated":"2015-01-07 13:34:42.000000000","message":"suggest: two ways that a pair of services may interact","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"        So what we need is to:"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        * Put in python clients headers with trace info (if profiler is inited)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        * Add OSprofiler WSGI middleware to service, that initializes"},{"line_number":89,"context_line":"          profiler, if there are special trace headers, that are signed by HMAC"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_a37e1319","line":86,"updated":"2015-01-07 13:34:42.000000000","message":"nit: initialised","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"2ac1dda3bae28e4b9571ee5724ee499a6907bad5","unresolved":false,"context_lines":[{"line_number":84,"context_line":"        So what we need is to:"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        * Put in python clients headers with trace info (if profiler is inited)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        * Add OSprofiler WSGI middleware to service, that initializes"},{"line_number":89,"context_line":"          profiler, if there are special trace headers, that are signed by HMAC"},{"line_number":90,"context_line":"          from api-paste.ini"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_40301756","line":87,"updated":"2015-01-06 21:39:56.000000000","message":"So I know we currently have a gazillion python clients, but have you considered using the common OpenStack client for the headers?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":90,"context_line":"          from api-paste.ini"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        Actually the algorithm is a bit more complex. The Python client will"},{"line_number":94,"context_line":"        also sign the trace info with a HMAC key passed to profiler.init,"},{"line_number":95,"context_line":"        and on reception the WSGI middleware will check that it\u0027s signed with"},{"line_number":96,"context_line":"        the **same** HMAC key that is specified in api-paste.ini. This ensures"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_a3a7f3ba","line":93,"updated":"2015-01-07 13:34:42.000000000","message":"Suggest removing first sentence, it\u0027s conversational and makes it sound like the previous two bullets weren\u0027t wholly accurate.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        Actually the algorithm is a bit more complex. The Python client will"},{"line_number":94,"context_line":"        also sign the trace info with a HMAC key passed to profiler.init,"},{"line_number":95,"context_line":"        and on reception the WSGI middleware will check that it\u0027s signed with"},{"line_number":96,"context_line":"        the **same** HMAC key that is specified in api-paste.ini. This ensures"},{"line_number":97,"context_line":"        that only the user that knows the HMAC key in api-paste.ini can init"},{"line_number":98,"context_line":"        a profiler properly and send trace info that will be actually"},{"line_number":99,"context_line":"        processed. This ensures that trace info that is sent in that does"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_96b7a584","line":96,"updated":"2015-01-06 22:47:55.000000000","message":"See comment about api-paste.ini options.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"85cdb1d0346dcb7e419e48ae95bcfd0335228bd0","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        that only the user that knows the HMAC key in api-paste.ini can init"},{"line_number":98,"context_line":"        a profiler properly and send trace info that will be actually"},{"line_number":99,"context_line":"        processed. This ensures that trace info that is sent in that does"},{"line_number":100,"context_line":"        **not** pass the HMAC validation will be discarded."},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    * RPC API"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_27c6c516","line":100,"updated":"2015-01-15 11:21:13.000000000","message":"This should be a separate spec, I think.\n\nWe should do this independently of os-profile, and make sure it gets into the logs and notifications send on both services.\n\nMy preference is simply for each receiver service to log its own request id, with an the request-id specified by the calling service (truncated over a max size, etc). The sender also should log the request id it gets back from the service it called.\n\nThat approach seems to avoid the need to configure HMAC validation, but I could be missing something.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"        RPC calls are used for interaction between services of one project."},{"line_number":106,"context_line":"        It\u0027s well known that projects are using oslo.messaging to deal with"},{"line_number":107,"context_line":"        RPC. It\u0027s very good, because projects deal with RPC in similar way."},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"        So there are 2 required changes:"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_83091797","line":107,"updated":"2015-01-07 13:34:42.000000000","message":"Suggest: RPC calls are used for intra-project service communication, facilitated by the common oslo.messaging library.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"85cdb1d0346dcb7e419e48ae95bcfd0335228bd0","unresolved":false,"context_lines":[{"line_number":114,"context_line":"        * On callee side initialize profiler, if there is trace info in request"},{"line_number":115,"context_line":"          context."},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        * Trace all methods of callee API (can be done via profiler.trace_cls)."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"* **What points should be tracked by default?**"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_67cc4d35","line":117,"updated":"2015-01-15 11:21:13.000000000","message":"This should be part of the above spec I mentioned on REST API, we should take the same approach in both cases, if possible. Minus the fact RPC is a somewhat trusted method of communication.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":136,"context_line":"     drivers."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"   * All SQL requests (turned off by default, because it produce a lot of"},{"line_number":139,"context_line":"     traffic)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_231ce3c1","line":139,"updated":"2015-01-07 13:34:42.000000000","message":"What do you think about system calls?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"2ac1dda3bae28e4b9571ee5724ee499a6907bad5","unresolved":false,"context_lines":[{"line_number":136,"context_line":"     drivers."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"   * All SQL requests (turned off by default, because it produce a lot of"},{"line_number":139,"context_line":"     traffic)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_407e57e5","line":139,"updated":"2015-01-06 21:39:56.000000000","message":"produces","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0d0922ad8733a7a0bad0c63fd542b16a3e197b4d","unresolved":false,"context_lines":[{"line_number":136,"context_line":"     drivers."},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"   * All SQL requests (turned off by default, because it produce a lot of"},{"line_number":139,"context_line":"     traffic)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da86d52c_be7cda21","line":139,"in_reply_to":"3a961159_231ce3c1","updated":"2015-02-03 08:10:37.000000000","message":"That\u0027s going to require going a layer lower; the only *potential* proposal for this I\u0027ve seen is @ https://lists.secondlife.com/pipermail/eventletdev/2015-January/001203.html","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"85cdb1d0346dcb7e419e48ae95bcfd0335228bd0","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"   * All SQL requests (turned off by default, because it produce a lot of"},{"line_number":139,"context_line":"     traffic)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Alternatives"},{"line_number":143,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_474e7197","line":140,"updated":"2015-01-15 11:21:13.000000000","message":"Why can\u0027t you use something like https://github.com/ohthree/tach to monkey patch oslo libs on the fly, so there is no need for this to live inside each projects code base?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0d0922ad8733a7a0bad0c63fd542b16a3e197b4d","unresolved":false,"context_lines":[{"line_number":137,"context_line":""},{"line_number":138,"context_line":"   * All SQL requests (turned off by default, because it produce a lot of"},{"line_number":139,"context_line":"     traffic)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Alternatives"},{"line_number":143,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da86d52c_5ebafec0","line":140,"in_reply_to":"3a961159_474e7197","updated":"2015-02-03 08:10:37.000000000","message":"I\u0027m also going to side on the fact that IMHO monkey patching things isn\u0027t really good. Do you monkey patch in logging code or new logging calls? Not likely, so it seems like we shouldn\u0027t monkey patch things on the fly for this either...\n\nI also don\u0027t think my operations people will be happy with monkey patching code in on the fly (just as they wouldn\u0027t be happy with me editing a file on a production system to \u0027patch\u0027 in new logging/print statements). It seems rather hazardous and I can be pretty sure they will not let that happen (especially since the monkey patched in code will not have been tested in the same release, aka the code isn\u0027t one unit); so I\u0027d rather have explicit calls (that were tested in a release, and code that they will be comfortable with) to do this imho (since injecting code that was never part of a release into a release, breaks the whole point of having QE/QA validated code that is known to work, this makes the ops people angry, which causes problems for me)... Unless you are volunteering to be on-call when this happens (and the code you *said* would monkey-patch things correctly turns out not to)? ;)","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":149,"context_line":"  * We are interested in getting one trace of points from different service,"},{"line_number":150,"context_line":"    not tracing all python calls inside one process."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"  * This library should be easy integratable in OpenStack. This means that:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    * It shouldn\u0027t require too many changes in code bases of integrating"},{"line_number":155,"context_line":"      projects."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_43472fa3","line":152,"updated":"2015-01-07 13:34:42.000000000","message":"This bullet and its sub-bullets is useful but better suited to the proposed change section.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"2ac1dda3bae28e4b9571ee5724ee499a6907bad5","unresolved":false,"context_lines":[{"line_number":149,"context_line":"  * We are interested in getting one trace of points from different service,"},{"line_number":150,"context_line":"    not tracing all python calls inside one process."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"  * This library should be easy integratable in OpenStack. This means that:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    * It shouldn\u0027t require too many changes in code bases of integrating"},{"line_number":155,"context_line":"      projects."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_6008b380","line":152,"updated":"2015-01-06 21:39:56.000000000","message":"easily integrated","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":152,"context_line":"  * This library should be easy integratable in OpenStack. This means that:"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    * It shouldn\u0027t require too many changes in code bases of integrating"},{"line_number":155,"context_line":"      projects."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    * We should be able to turn it off fully."},{"line_number":158,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_036a8719","line":155,"updated":"2015-01-07 13:34:42.000000000","message":"Otherwise we risk adoption being slow and haphazard.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    * It shouldn\u0027t require too many changes in code bases of integrating"},{"line_number":155,"context_line":"      projects."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    * We should be able to turn it off fully."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    * We should be able to keep it turned on in lazy mode in production"},{"line_number":160,"context_line":"      (e.g. admin should be able to \"trace\" on request)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_a356135c","line":157,"updated":"2015-01-07 13:34:42.000000000","message":"To avoid any performance impact or resource usage when the profiler data will not be used.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"2ac1dda3bae28e4b9571ee5724ee499a6907bad5","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    * It shouldn\u0027t require too many changes in code bases of integrating"},{"line_number":155,"context_line":"      projects."},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    * We should be able to turn it off fully."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    * We should be able to keep it turned on in lazy mode in production"},{"line_number":160,"context_line":"      (e.g. admin should be able to \"trace\" on request)."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_c0224700","line":157,"updated":"2015-01-06 21:39:56.000000000","message":"Turn it off in the gate or where? Who\u0027s we?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":157,"context_line":"    * We should be able to turn it off fully."},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    * We should be able to keep it turned on in lazy mode in production"},{"line_number":160,"context_line":"      (e.g. admin should be able to \"trace\" on request)."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"Impact on Existing APIs"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_234a23ad","line":160,"updated":"2015-01-07 13:34:42.000000000","message":"What\u0027s lazy mode? Please offer a reason why","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"2ac1dda3bae28e4b9571ee5724ee499a6907bad5","unresolved":false,"context_lines":[{"line_number":164,"context_line":"-----------------------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* All API methods of all projects will accept 2 new headers:"},{"line_number":167,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":170,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_60cd1330","line":167,"updated":"2015-01-06 21:39:56.000000000","message":"Have you done a study of what trace headers already exist? Will they be replaced or deprecated? Thinking of the x-openstack-request-id header that\u0027s already in place, would this be useful to use instead of creating a new one?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":164,"context_line":"-----------------------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* All API methods of all projects will accept 2 new headers:"},{"line_number":167,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":170,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_03ffe734","line":167,"updated":"2015-01-07 13:34:42.000000000","message":"Some requests result in multiple later requests. Sometimes the parent request ID is used, sometimes a new one is generated. It\u0027s important to be able to disambiguate all of these, while also seeing they are part of a larger request.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":164,"context_line":"-----------------------"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"* All API methods of all projects will accept 2 new headers:"},{"line_number":167,"context_line":"  X-Trace-Info and X-Trace-HMAC that will actually trigger profiler."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"* All python clients will accept --profiler key, that will actually put proper"},{"line_number":170,"context_line":"   X-Trace-Info and X-Trace-HMAC headers to HTTP request, and print trace id."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_16f57550","line":167,"in_reply_to":"3a961159_60cd1330","updated":"2015-01-06 22:47:55.000000000","message":"++","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"OSprofiler is using HMAC to sign trace headers. Only person that knows HMAC is"},{"line_number":177,"context_line":"able to trigger profiler. As HMAC is quite secure there won\u0027t be issues with"},{"line_number":178,"context_line":"security."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":181,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_037447cd","line":178,"updated":"2015-01-07 13:34:42.000000000","message":"Can the HMAC be sniffed if you have access to the OS network?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0d0922ad8733a7a0bad0c63fd542b16a3e197b4d","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"OSprofiler is using HMAC to sign trace headers. Only person that knows HMAC is"},{"line_number":177,"context_line":"able to trigger profiler. As HMAC is quite secure there won\u0027t be issues with"},{"line_number":178,"context_line":"security."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":181,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"}],"source_content_type":"text/x-rst","patch_set":3,"id":"da86d52c_7e36e253","line":178,"in_reply_to":"3a961159_037447cd","updated":"2015-02-03 08:10:37.000000000","message":"I\u0027m unsure what this would buy you.\n\nhttps://security.stackexchange.com/questions/20129/how-when-do-i-use-hmac\n\n\"\"\"\nAn important property of a MAC is that it is impossible¹ to produce the MAC of a message and a secret key without knowing the secret key. A MAC of the same message produced by a different key looks unrelated. Even knowing the MAC of other messages does not help in computing the MAC of a new message.\n\"\"\"","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":178,"context_line":"security."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":181,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"},{"line_number":182,"context_line":"users. Furthermore, attacker is not able to fetch profiling data."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_237dc3b2","line":181,"updated":"2015-01-07 13:34:42.000000000","message":"What about a DOS attack?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0d0922ad8733a7a0bad0c63fd542b16a3e197b4d","unresolved":false,"context_lines":[{"line_number":178,"context_line":"security."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":181,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"},{"line_number":182,"context_line":"users. Furthermore, attacker is not able to fetch profiling data."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"da86d52c_3e138ab9","line":181,"in_reply_to":"3a961159_237dc3b2","updated":"2015-02-03 08:10:37.000000000","message":"I\u0027m pretty sure you are already screwed if someone is DOSing your openstack apis (with or without this addition); you should have other mitigation methods (that aren\u0027t part of openstack) to avoid this imho...","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":179,"context_line":""},{"line_number":180,"context_line":"Even in worse case, when attacker knows HMAC, he will be able to trigger"},{"line_number":181,"context_line":"profiler, that will make his request a bit slower, but won\u0027t affect other"},{"line_number":182,"context_line":"users. Furthermore, attacker is not able to fetch profiling data."},{"line_number":183,"context_line":""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Performance Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_fb2a948f","line":182,"updated":"2015-01-06 22:47:55.000000000","message":"Please expand on what can/cannot be viewed via the profiling data. Having to filter secure/sensitive information at a 3rd point now seems less-than-desireable. We now have 3 points: Log, Notification, and profiling. Does this mean we need to add filtering at every new place in the future?\n\nLooking at osprofiler, it seems that osprofiler would capture a lot of data in the info-dictionary which potentially could leak sensitive information into the notifications from profiling. A simple unique ID [global request id?] in the info would be much better (with the line-number information).","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":186,"context_line":"------------------"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"* If it is turned off there is negligible performance overhead."},{"line_number":189,"context_line":"  Just couple of \"if None\" checks"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* If it is turned on, there are two different cases:"},{"line_number":192,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_035b6754","line":189,"updated":"2015-01-07 13:34:42.000000000","message":"nit: \"Just a few\", a couple is quite specifically 2","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":190,"context_line":""},{"line_number":191,"context_line":"* If it is turned on, there are two different cases:"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"  * No trace headers in request \u003d\u003e No performance impact"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"  * There is trace header:"},{"line_number":196,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_0309a730","line":193,"updated":"2015-01-07 13:34:42.000000000","message":"s/\u003d\u003e/means/","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":206,"context_line":"Configuration Impact"},{"line_number":207,"context_line":"--------------------"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"We are adding to all projects new CONF group options:"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"[profiler]"},{"line_number":212,"context_line":"#If False fully disable profiling feature."}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_9e1c0c68","line":209,"updated":"2015-01-07 13:34:42.000000000","message":"RST syntax dictates double colon to introduce a code block and the block should be indented by several (pref. 4) spaces","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"[profiler]"},{"line_number":212,"context_line":"#If False fully disable profiling feature."},{"line_number":213,"context_line":"#enabled \u003d True"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# If False doesn\u0027t trace SQL requests."},{"line_number":216,"context_line":"#trace_sqlalchemy \u003d True"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_fb49b4b8","line":213,"updated":"2015-01-06 22:47:55.000000000","message":"This should be disabled by default. Profiling should be an opt-in. This was discussed extensively with the keystone team, the reasoning is that this is an optional feature. At least to start this should be disabled by default and *possibly* evaluated for default on in the future.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"0abbe4111cea2a88ee90283faf2c26e60b41df30","unresolved":false,"context_lines":[{"line_number":210,"context_line":""},{"line_number":211,"context_line":"[profiler]"},{"line_number":212,"context_line":"#If False fully disable profiling feature."},{"line_number":213,"context_line":"#enabled \u003d True"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# If False doesn\u0027t trace SQL requests."},{"line_number":216,"context_line":"#trace_sqlalchemy \u003d True"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_1b6d9932","line":213,"in_reply_to":"3a961159_fb49b4b8","updated":"2015-01-07 03:48:42.000000000","message":"I agree, it should be off by default.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"#enabled \u003d True"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"# If False doesn\u0027t trace SQL requests."},{"line_number":216,"context_line":"#trace_sqlalchemy \u003d True"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"By default osprofiler is turned on. We can keep it turned on by default in"},{"line_number":219,"context_line":"production, because it doesn\u0027t add any overhead until it is triggered and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_3bc7bc13","line":216,"updated":"2015-01-06 22:47:55.000000000","message":"What is the overhead of SQL-Alchemy tracing? See above comment.\n\nLooking at the osprofiler code, it looks to be possible the info will include sensitive information - especially within keystone. Capturing the query itself is likely to be an issue - suggest working to extract the call location instead of the sql itself for profiling (e.g. called from \u003cblah\u003e.py:\u003cline no\u003e or similar.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"By default osprofiler is turned on. We can keep it turned on by default in"},{"line_number":219,"context_line":"production, because it doesn\u0027t add any overhead until it is triggered and"},{"line_number":220,"context_line":"profiler can be triggered only by person who knows HMAC key that is specified"},{"line_number":221,"context_line":"in api-paste.ini file."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Developer Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_76087980","line":221,"updated":"2015-01-06 22:47:55.000000000","message":"Config options in api-paste.ini are sub-optimal. The options are difficult to enforce type (auth_token middleware had this issue) and requires a lot of \"work around\" code. Suggest all options are moved to project.conf instead (and only project.conf)","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":3031,"name":"Sam Morrison","email":"sorrison@gmail.com","username":"sorrison"},"change_message_id":"0abbe4111cea2a88ee90283faf2c26e60b41df30","unresolved":false,"context_lines":[{"line_number":218,"context_line":"By default osprofiler is turned on. We can keep it turned on by default in"},{"line_number":219,"context_line":"production, because it doesn\u0027t add any overhead until it is triggered and"},{"line_number":220,"context_line":"profiler can be triggered only by person who knows HMAC key that is specified"},{"line_number":221,"context_line":"in api-paste.ini file."},{"line_number":222,"context_line":""},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"Developer Impact"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_bb656546","line":221,"in_reply_to":"3a961159_76087980","updated":"2015-01-07 03:48:42.000000000","message":"Yes please no options in the api-paste.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":225,"context_line":"----------------"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Developers will have to make sure that they\u0027re adding profiling hooks for new"},{"line_number":228,"context_line":"APIs, DB calls, etc."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Implementation"},{"line_number":231,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_f672a910","line":228,"updated":"2015-01-06 22:47:55.000000000","message":"What is the stack overhead of these calls? What happens if they are multiple layers deep:\n\n(keystone example)\nWSGI[trace point] -\u003e Router[trace point] -\u003e Manager[trace point] -\u003e Driver[trace point] -\u003e SQL-A[trace point]\n\nThis potentially could add significant call overhead (just via decorators/middleware) even as a no-op when disabled.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":225,"context_line":"----------------"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Developers will have to make sure that they\u0027re adding profiling hooks for new"},{"line_number":228,"context_line":"APIs, DB calls, etc."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Implementation"},{"line_number":231,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_5e74649b","line":228,"in_reply_to":"3a961159_f672a910","updated":"2015-01-07 13:34:42.000000000","message":"Boris could you discuss Morgan\u0027s comment in the Performance Impact section please?","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"85cdb1d0346dcb7e419e48ae95bcfd0335228bd0","unresolved":false,"context_lines":[{"line_number":226,"context_line":""},{"line_number":227,"context_line":"Developers will have to make sure that they\u0027re adding profiling hooks for new"},{"line_number":228,"context_line":"APIs, DB calls, etc."},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"Implementation"},{"line_number":231,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":232,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_4a2af87e","line":229,"updated":"2015-01-15 11:21:13.000000000","message":"This is the biggest issue I have with the idea at the moment.\n\nWhat can\u0027t we use something that is less intrusive to monkey patch when required, something like this:\nhttps://github.com/ohthree/tach","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"d443a88d39ae9f5fa7535f2477891ba2f51cc17a","unresolved":false,"context_lines":[{"line_number":240,"context_line":"Milestones"},{"line_number":241,"context_line":"----------"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"Juno-3"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"Work Items"},{"line_number":246,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_96d245cf","line":243,"updated":"2015-01-06 22:47:55.000000000","message":"This is not a correct milestone.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":259,"context_line":"* (DONE) Build OSprofiler library"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"* (IN PROGRESS) Add patch to all python clients"},{"line_number":262,"context_line":"  (e.g. https://review.openstack.org/#/c/101029/)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* (IN PROGRESS) Add patch to all projects"},{"line_number":265,"context_line":"  (e.g. https://review.openstack.org/#/c/105635/)"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_c3b79f83","line":262,"updated":"2015-01-07 13:34:42.000000000","message":"This makes the scope of this spec very large and hence interest is likely to die off before it is technically finished. Could you define the clients it\u0027s most important to include? While leaving the door open for other projects to add support if they choose to (and there\u0027s nothing to stop you doing that for them after this spec is complete).","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":262,"context_line":"  (e.g. https://review.openstack.org/#/c/101029/)"},{"line_number":263,"context_line":""},{"line_number":264,"context_line":"* (IN PROGRESS) Add patch to all projects"},{"line_number":265,"context_line":"  (e.g. https://review.openstack.org/#/c/105635/)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"* (TODO) Add documentation about how to configure and use OSprofiler."},{"line_number":268,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_03ad2731","line":265,"updated":"2015-01-07 13:34:42.000000000","message":"same","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":273,"context_line":"Incubation"},{"line_number":274,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":275,"context_line":""},{"line_number":276,"context_line":"We are expecting to get this incubated as a part of Rally program."},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"Adoption"},{"line_number":279,"context_line":"--------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_fe6430e6","line":276,"updated":"2015-01-07 13:34:42.000000000","message":"nit: of the Rally","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":283,"context_line":"Library"},{"line_number":284,"context_line":"-------"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"Code of OSprofiler library can be find here:"},{"line_number":287,"context_line":"https://github.com/stackforge/osprofiler/"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_3e5b1823","line":286,"updated":"2015-01-07 13:34:42.000000000","message":"nit: found here; RST","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":964,"name":"Anne Gentle","email":"annegentle@justwriteclick.com","username":"annegentle"},"change_message_id":"2ac1dda3bae28e4b9571ee5724ee499a6907bad5","unresolved":false,"context_lines":[{"line_number":296,"context_line":"Documentation Impact"},{"line_number":297,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"We should document in one place how to configure and use OSprofiler."},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"Dependencies"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_a001bb3a","line":299,"updated":"2015-01-06 21:39:56.000000000","message":"Which place? Let\u0027s discuss. There are two audiences - contributor developer and operators.","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"b1198642e19cb75bd4284e1d11e22e3ed0ed2bfd","unresolved":false,"context_lines":[{"line_number":302,"context_line":"Dependencies"},{"line_number":303,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"- OSprofiler can be optional dependency to python clients"},{"line_number":306,"context_line":"- OSprofiler should be in requirements of all projects"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a961159_3e89586f","line":305,"updated":"2015-01-07 13:34:42.000000000","message":"nit: an optional","commit_id":"e9ac3a0c6ae3670ef4ef0a8e6a57a092318cecdb"}]}
