)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"294e142c98ef1f467da58f98173fe1413d6e3abb","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"* Add initialization of osprofiler at start of serivce"},{"line_number":16,"context_line":"  Currently that includes oslo.messaging notifer instance creation"},{"line_number":17,"context_line":"  to senf Ceilometer backend notifications."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"* Fix fake notifier"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":26,"id":"5a5ae5dd_e8e1b5ff","line":17,"range":{"start_line":17,"start_character":5,"end_line":17,"end_character":9},"updated":"2016-02-03 12:18:51.000000000","message":"nit: s/senf/sent/","commit_id":"18fb56f382f35fafc9b99ee7d38b9fac91377b0a"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3e9f7c8db3fbed1a71811443991e52e6bc2b29b9","unresolved":false,"context_lines":[{"line_number":27,"context_line":""},{"line_number":28,"context_line":"* John Garbutt nova/cells/rpcapi.py:43"},{"line_number":29,"context_line":"    Is there a simple unit test we could add to confirm what this is doing?"},{"line_number":30,"context_line":"* Dan Smith nova/compute/rpcapi.py:66"},{"line_number":31,"context_line":"    So, this officially scares me. I don\u0027t like that it patches every"},{"line_number":32,"context_line":"    method here, regardless of whether profiling is enabled."},{"line_number":33,"context_line":"* John Garbutt nova/conductor/rpcapi.py:251"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":49,"id":"7a77a97e_dcb953eb","line":30,"updated":"2016-11-15 17:37:11.000000000","message":"get_trace_meta() and trace_cls() in profiler.py are now conditional and will only wrap class methods if osprofiler is installed *and* enabled.","commit_id":"e30ccd48f2b20db7d06d7f95bef3df06689b9213"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3e9f7c8db3fbed1a71811443991e52e6bc2b29b9","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    So, this officially scares me. I don\u0027t like that it patches every"},{"line_number":32,"context_line":"    method here, regardless of whether profiling is enabled."},{"line_number":33,"context_line":"* John Garbutt nova/conductor/rpcapi.py:251"},{"line_number":34,"context_line":"    I think we agreed on an earlier patchset to add @profiler.trace_cls(\"rpc\")"},{"line_number":35,"context_line":"    here?"},{"line_number":36,"context_line":"* John Garbutt nova/rpc.py:148"},{"line_number":37,"context_line":"    Can we add some unit tests for these two methods?"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":49,"id":"7a77a97e_fcce0f82","line":34,"updated":"2016-11-15 17:37:11.000000000","message":"done","commit_id":"e30ccd48f2b20db7d06d7f95bef3df06689b9213"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"3e9f7c8db3fbed1a71811443991e52e6bc2b29b9","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    I think we agreed on an earlier patchset to add @profiler.trace_cls(\"rpc\")"},{"line_number":35,"context_line":"    here?"},{"line_number":36,"context_line":"* John Garbutt nova/rpc.py:148"},{"line_number":37,"context_line":"    Can we add some unit tests for these two methods?"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Co-Authored-By: Boris Pavlovic \u003cboris@pavlovic.me\u003e"},{"line_number":40,"context_line":"Co-Authored-By: Munoz, Obed N \u003cobed.n.munoz@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":49,"id":"7a77a97e_5cc62368","line":37,"updated":"2016-11-15 17:37:11.000000000","message":"done","commit_id":"e30ccd48f2b20db7d06d7f95bef3df06689b9213"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"d9c6634b7ceada03d33fc91e40d7d8e82db3fc0f","unresolved":false,"context_lines":[{"line_number":23,"context_line":"TODO (Unsolved from previous revision):"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"* John Garbutt nova/cells/rpcapi.py:43"},{"line_number":26,"context_line":"    Is there a simple unit test we could add to confirm what this is doing?"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Co-Authored-By: Boris Pavlovic \u003cboris@pavlovic.me\u003e"},{"line_number":29,"context_line":"Co-Authored-By: Munoz, Obed N \u003cobed.n.munoz@intel.com\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":50,"id":"7a77a97e_c6d479ed","line":26,"updated":"2016-11-18 16:26:25.000000000","message":"Done.","commit_id":"7c326f85e57a55f8fc2add411aa8132641440d91"}],"nova/cells/rpcapi.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6afb14c60896061df97a9b0c39412f10d75eedab","unresolved":false,"context_lines":[{"line_number":40,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":44,"context_line":"class CellsAPI(object):"},{"line_number":45,"context_line":"    \u0027\u0027\u0027Cells client-side RPC API"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_e4b928cd","line":43,"updated":"2016-04-18 09:43:44.000000000","message":"Is there a simple unit test we could add to confirm this is doing the right thing?","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"}],"nova/cert/rpcapi.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5fd09c7bf8a4218d7476eef3b68b875d7990119b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":29,"context_line":"class CertAPI(object):"},{"line_number":30,"context_line":"    \u0027\u0027\u0027Client side of the cert rpc API."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_21e7d5e5","line":28,"updated":"2016-02-03 17:38:40.000000000","message":"Nit: I still like the idea of more specific names here, but lets let folks try this out.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"772013d9bf588983fb00536db61c26ea736a6f0f","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":29,"context_line":"class CertAPI(object):"},{"line_number":30,"context_line":"    \u0027\u0027\u0027Client side of the cert rpc API."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_e61a2a17","line":28,"in_reply_to":"5a5ae5dd_21e7d5e5","updated":"2016-02-03 20:04:30.000000000","message":"John, sorry for inconvenience and probable misunderstanding in advance. Let\u0027s take a look on the example trace - http://dinabelova.github.io/trace_nova_compute.html - if you\u0027ll grep rpc calls there (yeah, we\u0027re going to implement points filtering, but that\u0027s not in place yet :)) you\u0027ll see that each rpc point as all others has service name in the same raw, that\u0027s identifying what service was pinged by the rpc call. E.g.\n\nrpc\tnova\tnova-conductor\n\nso that\u0027s rpc call, but we can clearly see what nova service was pinged.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0c3543ea15492c1b33d27891ce9e5fc41022982","unresolved":false,"context_lines":[{"line_number":25,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":29,"context_line":"class CertAPI(object):"},{"line_number":30,"context_line":"    \u0027\u0027\u0027Client side of the cert rpc API."},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_95d1fecf","line":28,"in_reply_to":"5a5ae5dd_e61a2a17","updated":"2016-02-04 10:42:12.000000000","message":"OK. I am willing to give it a try like this.","commit_id":"c00655d418889a99590365c1ad66270c74597195"}],"nova/compute/rpcapi.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"e853af5a1e238d009d7e786c22d13d8caee36cd5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    return instance.host"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":67,"context_line":"class ComputeAPI(object):"},{"line_number":68,"context_line":"    \u0027\u0027\u0027Client side of the compute rpc API."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_f56814f7","line":66,"updated":"2016-04-20 21:52:53.000000000","message":"So, this officially scares me. I don\u0027t like that it patches every method here, regardless of whether profiling is enabled. Yes, the patches may fall through if the config says things are disabled, but we\u0027re still patched. obscurely. always.\n\nLooking at how the patching works in osprofiler, I don\u0027t understand why we can\u0027t have something like this in __init__:\n\n if CONF.do_that_profiling_thang:\n     profiler.patch_me(self)\n\nwhich does the same thing. That would mean we\u0027re not patched all the time when disabled, but would still be just as doable if we are. No?","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"7cb5d48307d989634fe37b439c8e695302d0394a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    return instance.host"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":67,"context_line":"class ComputeAPI(object):"},{"line_number":68,"context_line":"    \u0027\u0027\u0027Client side of the compute rpc API."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_d819cd23","line":66,"in_reply_to":"1a122d0e_f56814f7","updated":"2016-04-20 22:08:04.000000000","message":"I agree with Dan, decorating statically the classes means that even if we don\u0027t use osprofiler, we\u0027ll enter that decorator, which is a bit sad.\n\nProviding a new .patch() method in the osprofiler API sounds nice. Another possibility, which is a bit less fancy and rather nasty is to set the decorator dynamically.\n\nSay, you create an osprofiler.py module in the nova tree where you provide that .patch() method and do this, eg.\n\n  compute_rpcapi.ComputeAPI \u003d profiler.trace_cls(compute_rpcapi.ComputeAPI)\n\nHeh, hello monkeypatch !","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"a39ca37412530c4f7069ed9e8c5b9c138810cf42","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    return instance.host"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":67,"context_line":"class ComputeAPI(object):"},{"line_number":68,"context_line":"    \u0027\u0027\u0027Client side of the compute rpc API."},{"line_number":69,"context_line":""}],"source_content_type":"text/x-python","patch_set":41,"id":"bab6814e_60e89e17","line":66,"in_reply_to":"1a122d0e_f56814f7","updated":"2016-05-24 11:52:10.000000000","message":"I think such solution is possible. I\u0027ll produce the needed commit soon and will add you folks to its review.","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"}],"nova/conductor/manager.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3116c49445c682348f675d22f56d9b7127c51d94","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    may involve coordinating activities on multiple compute nodes."},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    __trace_args__ \u003d {\"name\": \"rpc\"}"},{"line_number":148,"context_line":"    target \u003d messaging.Target(namespace\u003d\u0027compute_task\u0027, version\u003d\u00271.11\u0027)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_6d511ad8","line":147,"updated":"2016-01-21 18:17:19.000000000","message":"why is this here, and not in other similar places?","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7e0acf323a3f6b4a6f72a11fd7bd03f656c24212","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    may involve coordinating activities on multiple compute nodes."},{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    __trace_args__ \u003d {\"name\": \"rpc\"}"},{"line_number":148,"context_line":"    target \u003d messaging.Target(namespace\u003d\u0027compute_task\u0027, version\u003d\u00271.11\u0027)"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_ffe34c03","line":147,"in_reply_to":"9a68dd71_6d511ad8","updated":"2016-01-22 10:16:32.000000000","message":"oh, that needs to be removed, I was experimenting with adding additional info to the trace, and set metaclass here. Then I removed it, but forgot to deal with this line. Thanks for catch!","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"}],"nova/conductor/rpcapi.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3116c49445c682348f675d22f56d9b7127c51d94","unresolved":false,"context_lines":[{"line_number":31,"context_line":"CONF.register_opt(rpcapi_cap_opt, \u0027upgrade_levels\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":35,"context_line":"class ConductorAPI(object):"},{"line_number":36,"context_line":"    \"\"\"Client side of the conductor RPC API"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_6d16faf2","line":34,"updated":"2016-01-21 18:17:19.000000000","message":"There seem to be lost of things with the name rpc, is that OK? Do we now want this to be conductor_rpc?\n\nIf not, why do we name the image_api and other apis? Not sure I understand what we are doing here.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"490f26e59a4d6950121452863278dc150d94ffff","unresolved":false,"context_lines":[{"line_number":31,"context_line":"CONF.register_opt(rpcapi_cap_opt, \u0027upgrade_levels\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":35,"context_line":"class ConductorAPI(object):"},{"line_number":36,"context_line":"    \"\"\"Client side of the conductor RPC API"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_4a30ec07","line":34,"in_reply_to":"7a5de9d1_5c891374","updated":"2016-02-02 22:39:28.000000000","message":"John, but the service name tells us it\u0027s the conductor?","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6f462eacb8196d5732e3037c8235cf1ffa61f646","unresolved":false,"context_lines":[{"line_number":31,"context_line":"CONF.register_opt(rpcapi_cap_opt, \u0027upgrade_levels\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":35,"context_line":"class ConductorAPI(object):"},{"line_number":36,"context_line":"    \"\"\"Client side of the conductor RPC API"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_5c891374","line":34,"in_reply_to":"9a68dd71_3f39e441","updated":"2016-01-31 12:01:41.000000000","message":"Thanks for the link.\n\nI still think going for rpc_conductor would give us more info for each of these calls.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7e0acf323a3f6b4a6f72a11fd7bd03f656c24212","unresolved":false,"context_lines":[{"line_number":31,"context_line":"CONF.register_opt(rpcapi_cap_opt, \u0027upgrade_levels\u0027)"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"@profiler.trace_cls(\"rpc\")"},{"line_number":35,"context_line":"class ConductorAPI(object):"},{"line_number":36,"context_line":"    \"\"\"Client side of the conductor RPC API"},{"line_number":37,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_3f39e441","line":34,"in_reply_to":"9a68dd71_6d16faf2","updated":"2016-01-22 10:16:32.000000000","message":"We just tried to separate all rpc calls to the different thread (that in fact fall into RPC APIs) with just functional calls like calling image_api that in fact is not RPC and is called from osapi_compute on controller node - take a look on http://dinabelova.github.io/trace_nova_compute.html example. RPC calls fell to separated services (threads), and just important points like getting the image is done from the same thread.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5fd09c7bf8a4218d7476eef3b68b875d7990119b","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                          object_versions\u003dobject_versions)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class ComputeTaskAPI(object):"},{"line_number":257,"context_line":"    \"\"\"Client side of the conductor \u0027compute\u0027 namespaced RPC API"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_9c1ab016","line":256,"updated":"2016-02-03 17:38:40.000000000","message":"are we not missing out this one?","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0c3543ea15492c1b33d27891ce9e5fc41022982","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                          object_versions\u003dobject_versions)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class ComputeTaskAPI(object):"},{"line_number":257,"context_line":"    \"\"\"Client side of the conductor \u0027compute\u0027 namespaced RPC API"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_959fbe02","line":256,"in_reply_to":"5a5ae5dd_0cc68567","updated":"2016-02-04 10:42:12.000000000","message":"it gets called from the API, just like the compute one really.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"33be84b7fb0518591bd59703d18566f83d93f677","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                          object_versions\u003dobject_versions)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class ComputeTaskAPI(object):"},{"line_number":257,"context_line":"    \"\"\"Client side of the conductor \u0027compute\u0027 namespaced RPC API"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_0cc68567","line":256,"in_reply_to":"5a5ae5dd_66ab9a8a","updated":"2016-02-03 20:49:30.000000000","message":"interesting, if I\u0027m adding the profiling trace here (with specific name e.g. rpc-compute-task), i see no points with this. Probably (?) this means that some else layer need to be traced to see these points presented. I suppose I\u0027ll need to fix it, but not as a part of this particular change, as the research will take time and I cannot estimate how much due to the internal activities I\u0027m taking part on :(","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":9172,"name":"Radoslav Gerganov","email":"rgerganov@vmware.com","username":"rgerganov"},"change_message_id":"82e85a76355a2cabe709223a0f4c538a628b2a83","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                          object_versions\u003dobject_versions)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class ComputeTaskAPI(object):"},{"line_number":257,"context_line":"    \"\"\"Client side of the conductor \u0027compute\u0027 namespaced RPC API"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":27,"id":"9aed3d3a_c7408059","line":256,"in_reply_to":"5a5ae5dd_959fbe02","updated":"2016-02-26 12:23:47.000000000","message":"@Dina you are not seeing it because of the way osprofiler parses notifications, see osprofiler/parsers/ceilometer.py:\n\n\"name\": name.split(\"-\")[0]\n\nif the name is \"rpc-compute-task\" you will still get \"rpc\" in the html output. By the way, I don\u0027t see any reason why this shouldn\u0027t be traced as \"rpc\".","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"784f0b2c7ecb2a373998138dac9500bef467e4bd","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                          object_versions\u003dobject_versions)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"class ComputeTaskAPI(object):"},{"line_number":257,"context_line":"    \"\"\"Client side of the conductor \u0027compute\u0027 namespaced RPC API"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_66ab9a8a","line":256,"in_reply_to":"5a5ae5dd_9c1ab016","updated":"2016-02-03 20:06:36.000000000","message":"I\u0027ll recheck it, thanks.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6afb14c60896061df97a9b0c39412f10d75eedab","unresolved":false,"context_lines":[{"line_number":248,"context_line":"                          object_versions\u003dobject_versions)"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"class ComputeTaskAPI(object):"},{"line_number":252,"context_line":"    \"\"\"Client side of the conductor \u0027compute\u0027 namespaced RPC API"},{"line_number":253,"context_line":""},{"line_number":254,"context_line":"    API version history:"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_41360e53","line":251,"updated":"2016-04-18 09:43:44.000000000","message":"I think we agreed on an earlier patchset to add @profiler.trace_cls(\"rpc\") here?","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"}],"nova/conf/profiler_options.py":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"enabled_opt \u003d cfg.BoolOpt("},{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_3d5b6656","line":29,"updated":"2015-12-10 09:37:45.000000000","message":"Do we really need \u0027enabled\u0027 flag? can we not just enable when a hmac key is present?","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"2591b801c692b6ac02440678c3db01a2a74d1447","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"enabled_opt \u003d cfg.BoolOpt("},{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_33cd95b7","line":29,"in_reply_to":"7a740942_074ce540","updated":"2015-12-11 09:08:05.000000000","message":"Ack Boris. Just making sure.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8e506ea53a715602e23df4ea93afd352497835a9","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"enabled_opt \u003d cfg.BoolOpt("},{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_074ce540","line":29,"in_reply_to":"7a740942_1192f54b","updated":"2015-12-10 23:18:20.000000000","message":"Dims, we should keep flag because it was required by many projects.\n\n+ Explicit in such cases is better then implicit.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"enabled_opt \u003d cfg.BoolOpt("},{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_1192f54b","line":29,"in_reply_to":"7a740942_3d5b6656","updated":"2015-12-10 17:37:36.000000000","message":"Dims, I believe it\u0027s better to keep this flag, as that seems a bit more logical to me. Having section\n\n[profiler]\nenabled \u003d True\n\nright now is enough to have the trace through all API/RPC requests. If we\u0027ll make hmac_keys the trigger here, that will mean we\u0027ll need to make it None by default and make people type these HMAC_KEY string everywhere they need it manually, without having some default value persistent through the all OpenStack services.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_ca993621","line":55,"updated":"2015-12-10 09:37:45.000000000","message":"should be \"hmac_key\" as this is a single key","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d26332848a6cb545569ff3a28997e028f3642abe","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_428b89c3","line":55,"in_reply_to":"7a740942_27bf6fab","updated":"2015-12-11 19:23:57.000000000","message":"I would agree, yeah...","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7c3f8a7b4c0d142f1a1d6b319f769806443a1e50","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_6c5d5e46","line":55,"in_reply_to":"7a740942_38857406","updated":"2015-12-11 18:37:24.000000000","message":"Dims, I\u0027ll do that in future, but right now osprofiler in fact accepts string with , and no spaces... I\u0027ll need to add support of both approaches in osprofiler first, cut the release and then move all other projects to this approach. So right now it\u0027s not possible in fact.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"2591b801c692b6ac02440678c3db01a2a74d1447","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_38857406","line":55,"in_reply_to":"7a740942_4758adfa","updated":"2015-12-11 09:08:05.000000000","message":"Then please use ListOpt or MultiStrOpt. StrOpt with spaces is not appropriate","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8e506ea53a715602e23df4ea93afd352497835a9","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_4758adfa","line":55,"in_reply_to":"7a740942_51edddb5","updated":"2015-12-10 23:18:20.000000000","message":"hmac_keys is not single key it\u0027s any amount of keys separated with white spcaes.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"5b6c248fe56ceea0c592bf3d251d6ef0a0d8d1dd","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_27bf6fab","line":55,"in_reply_to":"7a740942_6c5d5e46","updated":"2015-12-11 18:50:19.000000000","message":"Dina, Here\u0027s the problem, these are configuration parameters in Nova, they don\u0027t belong to osprofiler. If you see oslo libraries the configuration parameters belong to oslo library (and not Nova). So you have that problem and another problem is that if you add something to Nova, it will take a long cycle to deprecate that. Also since you still have to have a new osprofiler release for the \"repeated decoration\" problem, i\u0027d encourage you to consider this work sooner than later. I am not a Nova core or a osprofiler core. So i can just state my opinion :) my 2cents.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_51edddb5","line":55,"in_reply_to":"7a740942_ca993621","updated":"2015-12-10 17:37:36.000000000","message":"in fact I need to add here additional info, yeah... Server side may have multiple HMAC_KEYS it can use to unsign the message got from client side - https://github.com/openstack/osprofiler/blob/master/osprofiler/_utils.py#L114 - so the mac_keys is string with the following format: key_1[,key2,...,keyn]\n\nwill add more info here about this","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"In order to make profiling work as designed operator needs to make those"},{"line_number":60,"context_line":"values of HMAC key be consistent for all services in their deployment. Without"},{"line_number":61,"context_line":"HMAC key the profiling will not be triggered even profiling feature is"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_cac056e3","line":58,"updated":"2015-12-10 09:37:45.000000000","message":"Need a tip on how they can generate a key too?","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"2591b801c692b6ac02440678c3db01a2a74d1447","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"In order to make profiling work as designed operator needs to make those"},{"line_number":60,"context_line":"values of HMAC key be consistent for all services in their deployment. Without"},{"line_number":61,"context_line":"HMAC key the profiling will not be triggered even profiling feature is"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_b3e2e52d","line":58,"in_reply_to":"7a740942_07738581","updated":"2015-12-11 09:08:05.000000000","message":"Then we should just say that. \"Any random string that should be used to encrypt the context data using HMAC-SHA1 algorithm\"","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"In order to make profiling work as designed operator needs to make those"},{"line_number":60,"context_line":"values of HMAC key be consistent for all services in their deployment. Without"},{"line_number":61,"context_line":"HMAC key the profiling will not be triggered even profiling feature is"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_f17889fa","line":58,"in_reply_to":"7a740942_cac056e3","updated":"2015-12-10 17:37:36.000000000","message":"that can be random string that is persistent between all OpenStack services person would like to trace. Or, in fact, it can be set of these keys on server side - take a look on my previous comment.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8e506ea53a715602e23df4ea93afd352497835a9","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"In order to make profiling work as designed operator needs to make those"},{"line_number":60,"context_line":"values of HMAC key be consistent for all services in their deployment. Without"},{"line_number":61,"context_line":"HMAC key the profiling will not be triggered even profiling feature is"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_07738581","line":58,"in_reply_to":"7a740942_f17889fa","updated":"2015-12-10 23:18:20.000000000","message":"it\u0027s any string.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"In order to make profiling work as designed operator needs to make those"},{"line_number":60,"context_line":"values of HMAC key be consistent for all services in their deployment. Without"},{"line_number":61,"context_line":"HMAC key the profiling will not be triggered even profiling feature is"},{"line_number":62,"context_line":"enabled via *enabled* option.\"\"\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_5df2f207","line":59,"updated":"2015-12-10 09:37:45.000000000","message":"How does this sound?\n\nBoth \u0027enabled\u0027 flag and \u0027hmac_key\u0027 config options should be set to enable profiling. Also, the \u0027hmac_key\u0027 should be consistent across services to generate correct profiling information.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"In order to make profiling work as designed operator needs to make those"},{"line_number":60,"context_line":"values of HMAC key be consistent for all services in their deployment. Without"},{"line_number":61,"context_line":"HMAC key the profiling will not be triggered even profiling feature is"},{"line_number":62,"context_line":"enabled via *enabled* option.\"\"\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_5172bd12","line":59,"in_reply_to":"7a740942_5df2f207","updated":"2015-12-10 17:37:36.000000000","message":"yeah, sounds good. Will use your variant.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    conf.register_opts(PROFILER_OPTS, group\u003dprofiler_opt_group)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def list_opts():"},{"line_number":76,"context_line":"    return profiler_opt_group.name, PROFILER_OPTS"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_bdf2f66d","line":75,"updated":"2015-12-10 09:37:45.000000000","message":"please add a entry in etc/nova/nova-config-generator.conf","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    conf.register_opts(PROFILER_OPTS, group\u003dprofiler_opt_group)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def list_opts():"},{"line_number":76,"context_line":"    return profiler_opt_group.name, PROFILER_OPTS"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_f1c64915","line":75,"in_reply_to":"7a740942_bdf2f66d","updated":"2015-12-10 17:37:36.000000000","message":"oops, yep, thank you. Will fix.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"},{"line_number":33,"context_line":"disabling the profiling feature for Nova)."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_e95a91f1","line":32,"range":{"start_line":32,"start_character":26,"end_line":32,"end_character":33},"updated":"2016-01-14 12:18:32.000000000","message":"\"in *all* Nova services on this node\" IIUC. IOW, I cannot enable/disable the tracing for single services, right?","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"},{"line_number":33,"context_line":"disabling the profiling feature for Nova)."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_645008d5","line":32,"range":{"start_line":32,"start_character":26,"end_line":32,"end_character":33},"in_reply_to":"da6ed579_e95a91f1","updated":"2016-01-14 12:41:56.000000000","message":"yes, that\u0027s true because all services use the same nova.conf","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"},{"line_number":33,"context_line":"disabling the profiling feature for Nova)."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Possible values:"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_5e44b5b5","line":33,"updated":"2016-01-14 12:18:32.000000000","message":"When this is disabled, to I prevent cross-project profiling completely or can I still do cross-project profiling, but the Nova part will be \"empty\"?","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"},{"line_number":33,"context_line":"disabling the profiling feature for Nova)."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Possible values:"},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_440144ae","line":33,"in_reply_to":"da6ed579_5e44b5b5","updated":"2016-01-14 12:41:56.000000000","message":"Nova part will be empty + we won\u0027t be able to start profiling from nova, but in case if we were profiling heat, for instance, we just won\u0027t see nova part","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    default\u003dFalse,"},{"line_number":44,"context_line":"    help\u003d\"\"\""},{"line_number":45,"context_line":"Enables SQL requests profiling in Nova services. Default value is False (SQL"},{"line_number":46,"context_line":"requests won\u0027t be traced)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Possible values:"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_deb2e5e4","line":46,"updated":"2016-01-14 12:18:32.000000000","message":"When this is \"False\", the time spent on the SqlAlchemy layer will be added to the db layer above it? And when I change it to \"True\", the spent time will be listed more granular and with a statement how much of the \"db\" layer time is spent on the sqlalchemy layer? IOW, when am I supposed to switch this from False to True?","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    default\u003dFalse,"},{"line_number":44,"context_line":"    help\u003d\"\"\""},{"line_number":45,"context_line":"Enables SQL requests profiling in Nova services. Default value is False (SQL"},{"line_number":46,"context_line":"requests won\u0027t be traced)."},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Possible values:"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_c4ad3485","line":46,"in_reply_to":"da6ed579_deb2e5e4","updated":"2016-01-14 12:41:56.000000000","message":"in fact this time is usually included even without tracing, as time spent on all nova operations include this db-communicating time as well. if db-tracing is turned on, that means, we\u0027ll see how much time was spent on the separate SQL queries. Like we\u0027ll be able to see query by query done by nova listing the VMs, etc.","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* True: Enables SQL requests profiling"},{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_e9dff137","line":52,"updated":"2016-01-14 12:18:32.000000000","message":"That\u0027s an option which is only used be the \"nova-conductor\" service IIUC? If \"yes\", please add that to the help text:\n\n    Services which consume this:\n    \n    * nova-conductor","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key(s) to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"This string value should have the following format: \u003ckey1\u003e[,\u003ckey2\u003e,...\u003ckeyn\u003e],"},{"line_number":60,"context_line":"where each key is some random string. Client should set one of these keys to"},{"line_number":61,"context_line":"trigger the tracing for this particular project."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Both \u0027enabled\u0027 flag and \u0027hmac_keys\u0027 config options should be set to enable"},{"line_number":64,"context_line":"profiling. Also, to generate correct profiling information across all services"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_de28a535","line":61,"range":{"start_line":60,"start_character":38,"end_line":61,"end_character":48},"updated":"2016-01-14 12:18:32.000000000","message":"I don\u0027t quite understand this sentence. Is \"Client\" the operator, or a CLI client, or the REST API user, or another entity? And where should I \"set one of these keys\"?","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key(s) to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"This string value should have the following format: \u003ckey1\u003e[,\u003ckey2\u003e,...\u003ckeyn\u003e],"},{"line_number":60,"context_line":"where each key is some random string. Client should set one of these keys to"},{"line_number":61,"context_line":"trigger the tracing for this particular project."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Both \u0027enabled\u0027 flag and \u0027hmac_keys\u0027 config options should be set to enable"},{"line_number":64,"context_line":"profiling. Also, to generate correct profiling information across all services"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_0f4fe56b","line":61,"range":{"start_line":60,"start_character":38,"end_line":61,"end_character":48},"in_reply_to":"da6ed579_de28a535","updated":"2016-01-14 12:41:56.000000000","message":"In this specific moment it\u0027s about setting needed headers to Nova API - nova CLI client can set it via config option introduced in https://review.openstack.org/#/c/254699/ - so we will be able to type\n\nnova --profile SECRET_KEY boot --image b2c0799f-457a-48ad-aa26-09c5581fd67d --flavor 42 vm1\n\nso SECRET_KEY here is \"one of the keys set in nova.conf\"\n\nFor instance, we can see in Nova conf:\n\nhmac_keys \u003d NOVA_KEY,SECRET_KEY\n\nin this case we\u0027ll be able to trace nova either with NOVA_KEY or SECRET_KEY\n\nif NOVA_KEY is set only in nova conf, and SECRET_KEY is in all OpenStack services configuraiotns, that means that if we\u0027ll boot with NOVA_KEY, we\u0027ll see only Nova operations tracing, and if SECRET_KEY was used, that means we\u0027ll see profiling of all services in trace","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"profiling. Also, to generate correct profiling information across all services"},{"line_number":65,"context_line":"at least one key needs to be consistent between OpenStack projects. This"},{"line_number":66,"context_line":"ensures it can be used from client side to generate the trace, containing"},{"line_number":67,"context_line":"information from all possible resources.\"\"\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"PROFILER_OPTS \u003d ["},{"line_number":70,"context_line":"    enabled_opt,"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_499ddd64","line":67,"updated":"2016-01-14 12:18:32.000000000","message":"That\u0027s also a config option for *all* nova services IIUC?","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":64,"context_line":"profiling. Also, to generate correct profiling information across all services"},{"line_number":65,"context_line":"at least one key needs to be consistent between OpenStack projects. This"},{"line_number":66,"context_line":"ensures it can be used from client side to generate the trace, containing"},{"line_number":67,"context_line":"information from all possible resources.\"\"\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"PROFILER_OPTS \u003d ["},{"line_number":70,"context_line":"    enabled_opt,"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_af401935","line":67,"in_reply_to":"da6ed579_499ddd64","updated":"2016-01-14 12:41:56.000000000","message":"yes, sir","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def list_opts():"},{"line_number":81,"context_line":"    return profiler_opt_group.name, PROFILER_OPTS"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_9eaeade4","line":81,"range":{"start_line":81,"start_character":29,"end_line":81,"end_character":34},"updated":"2016-01-14 12:18:32.000000000","message":"We use now oslo.config 3.2.0 which is capable of handling the OptGroup object. The help text of ``profiler_opt_group`` will be then in the generated ``etc/nova/nova.conf.sample`` file when you execute ``tox -e genconfig``.","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def list_opts():"},{"line_number":81,"context_line":"    return profiler_opt_group.name, PROFILER_OPTS"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_4f607dcf","line":81,"range":{"start_line":81,"start_character":29,"end_line":81,"end_character":34},"in_reply_to":"da6ed579_9eaeade4","updated":"2016-01-14 12:41:56.000000000","message":"ok, will generate it, thanks!","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    \u0027enabled\u0027,"},{"line_number":30,"context_line":"    default\u003dFalse,"},{"line_number":31,"context_line":"    help\u003d\"\"\""},{"line_number":32,"context_line":"Enables profiling feature in Nova services. Default value is False (fully"},{"line_number":33,"context_line":"disabling the profiling feature for Nova)."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Possible values:"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_aba995e1","line":32,"range":{"start_line":32,"start_character":0,"end_line":32,"end_character":42},"updated":"2016-01-18 17:31:35.000000000","message":"What I tried to say in patch set #16 is that the following change could make things clearer:\n\n    Enables the profiling for all Nova services on this node.","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":35,"context_line":"Possible values:"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* True: Enables the feature"},{"line_number":38,"context_line":"* False: Disables the feature"},{"line_number":39,"context_line":"\"\"\")"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"trace_sqlalchemy_opt \u003d cfg.BoolOpt("}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_8b0e11e4","line":38,"range":{"start_line":38,"start_character":9,"end_line":38,"end_character":29},"updated":"2016-01-18 17:31:35.000000000","message":"What I tried to say in patch set #16 is:\n\n    Disables the feature. The profiling cannot be started\n    via Nova. If the profiling is triggered by another\n    project, the Nova part will be empty.","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Possible values:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* True: Enables SQL requests profiling"},{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_2bee05ed","line":50,"range":{"start_line":50,"start_character":8,"end_line":50,"end_character":38},"updated":"2016-01-18 17:31:35.000000000","message":"What I tried to say in patch set #16 is:\n\n    Enables SQL requests profiling. Each SQL query will\n    be part of the profiling and can the be analyzed by\n    how much time was spent for that.","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":48,"context_line":"Possible values:"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* True: Enables SQL requests profiling"},{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_cbb5e9d0","line":51,"range":{"start_line":51,"start_character":9,"end_line":51,"end_character":40},"updated":"2016-01-18 17:31:35.000000000","message":"What I tried to say in patch set #16 is:\n\n    Disables SQL requests profiling. The spent time is\n    only shown on a high level of Nova operations. Single\n    SQL queries cannot be analyzed this way.","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* True: Enables SQL requests profiling"},{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_8be611e7","line":52,"updated":"2016-01-18 17:31:35.000000000","message":"What I tried to say in patch set #16 is:\n\n    Services which consume this:\n    \n    * nova-conductor\n\nIn case my assumption, that this is only consumed by this service, is true.","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"992ab340275ca1b412f57e301400f5146375abb2","unresolved":false,"context_lines":[{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* True: Enables SQL requests profiling"},{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_874d6774","line":52,"in_reply_to":"ba63e191_8be611e7","updated":"2016-01-19 15:47:27.000000000","message":"afair DB operations are used from nova-api directly without conductor usage. Am I wrong?","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_8e405f09","line":54,"range":{"start_line":54,"start_character":20,"end_line":54,"end_character":26},"updated":"2016-01-18 17:31:35.000000000","message":"nit: Based on the description, a \"MultiStrOpt\" [1] could be the better choice. \"split()\" and \"strip()\" would be done for you under the cover.\n\n[1] http://docs.openstack.org/developer/oslo.config/opts.html#oslo_config.cfg.MultiStrOpt","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b6543140b1fdf42e83cdef6dc85826e383e3f8a9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"* False: Disables SQL requests profiling"},{"line_number":52,"context_line":"\"\"\")"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"hmac_keys_opt \u003d cfg.StrOpt("},{"line_number":55,"context_line":"    \"hmac_keys\","},{"line_number":56,"context_line":"    default\u003d\"SECRET_KEY\","},{"line_number":57,"context_line":"    help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_477c4f72","line":54,"range":{"start_line":54,"start_character":20,"end_line":54,"end_character":26},"in_reply_to":"ba63e191_8e405f09","updated":"2016-01-19 15:48:31.000000000","message":"Markus, yeah, this needs to be done, but on the osprofiler side first of all. Now it consumes the string like that ^^","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    help\u003d\"\"\""},{"line_number":58,"context_line":"Secret key(s) to use for encrypting context data for performance profiling."},{"line_number":59,"context_line":"This string value should have the following format: \u003ckey1\u003e[,\u003ckey2\u003e,...\u003ckeyn\u003e],"},{"line_number":60,"context_line":"where each key is some random string. Client should set one of these keys to"},{"line_number":61,"context_line":"trigger the tracing for this particular project."},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Both \u0027enabled\u0027 flag and \u0027hmac_keys\u0027 config options should be set to enable"},{"line_number":64,"context_line":"profiling. Also, to generate correct profiling information across all services"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_2e4613c0","line":61,"range":{"start_line":60,"start_character":37,"end_line":61,"end_character":48},"updated":"2016-01-18 17:31:35.000000000","message":"Based on your answer on my question in patch set #16:\n\n    A user which triggers the profiling via the REST API\n    has to set one of these keys in the headers of the\n    REST API call to include profiling results of this\n    node for Nova.\n\nAFAIK the Nova CLI will be superseded by the OpenStack CLI and we one entry point into Nova we know for sure is the REST API. That could be called by the Nova CLI, the OpenStack CLI, the novaclient python interface. That\u0027s why I think mentioning the REST API in the config options help makes more sense than the CLI.","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"9a93c569f109cd32ef5ae789ccbc40ae105c5694","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"def list_opts():"},{"line_number":81,"context_line":"    return profiler_opt_group.name, PROFILER_OPTS"}],"source_content_type":"text/x-python","patch_set":19,"id":"ba63e191_a848bb88","line":81,"range":{"start_line":81,"start_character":4,"end_line":81,"end_character":49},"updated":"2016-01-18 17:31:35.000000000","message":"What I meant in patch set #16 is, that you can use the OptGroup itself and not only its name. And we expect a dict here how. Like this:\n\n    return {profiler_opt_group: PROFILER_OPTS}","commit_id":"feccf51ad115dfb0861602cc45f566842f3c76b0"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3116c49445c682348f675d22f56d9b7127c51d94","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"profiler_opt_group \u003d cfg.OptGroup("},{"line_number":20,"context_line":"    \"profiler\","},{"line_number":21,"context_line":"    title\u003d\"OpenStack cross-service profiling\","},{"line_number":22,"context_line":"    help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_db9561e4","line":19,"updated":"2016-01-21 18:17:19.000000000","message":"Can we drop all these, if we make use of:\nhttps://github.com/openstack/osprofiler/commit/bf7219a1eec4751080cfdd644a037afd0d52ac35","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7e0acf323a3f6b4a6f72a11fd7bd03f656c24212","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"profiler_opt_group \u003d cfg.OptGroup("},{"line_number":20,"context_line":"    \"profiler\","},{"line_number":21,"context_line":"    title\u003d\"OpenStack cross-service profiling\","},{"line_number":22,"context_line":"    help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_df6e882e","line":19,"in_reply_to":"9a68dd71_db9561e4","updated":"2016-01-22 10:16:32.000000000","message":"yes, sure - this will be done once the release will be cut. I just left it here for now for easier getting this change to the dev env.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6f462eacb8196d5732e3037c8235cf1ffa61f646","unresolved":false,"context_lines":[{"line_number":16,"context_line":"from oslo_config import cfg"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"profiler_opt_group \u003d cfg.OptGroup("},{"line_number":20,"context_line":"    \"profiler\","},{"line_number":21,"context_line":"    title\u003d\"OpenStack cross-service profiling\","},{"line_number":22,"context_line":"    help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_7c8e4f7a","line":19,"in_reply_to":"9a68dd71_df6e882e","updated":"2016-01-31 12:01:41.000000000","message":"ah, cool.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"}],"nova/db/sqlalchemy/api.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":59,"context_line":"from sqlalchemy.sql import null"},{"line_number":60,"context_line":"from sqlalchemy.sql import true"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"from nova import block_device"},{"line_number":63,"context_line":"from nova.compute import task_states"},{"line_number":64,"context_line":"from nova.compute import vm_states"},{"line_number":65,"context_line":"import nova.context"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_3e2d41a8","line":62,"updated":"2016-01-14 12:18:32.000000000","message":"The \"nova.conf\" package should be imported here. This enables you to access all config options and with it the osprofiler options.\n\n    import nova.conf","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":59,"context_line":"from sqlalchemy.sql import null"},{"line_number":60,"context_line":"from sqlalchemy.sql import true"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"from nova import block_device"},{"line_number":63,"context_line":"from nova.compute import task_states"},{"line_number":64,"context_line":"from nova.compute import vm_states"},{"line_number":65,"context_line":"import nova.context"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_cfa22dfc","line":62,"in_reply_to":"da6ed579_3e2d41a8","updated":"2016-01-14 12:41:56.000000000","message":"thank you sir","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                    \u0027SQLAlchemy.\u0027),"},{"line_number":126,"context_line":"]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"CONF \u003d cfg.CONF"},{"line_number":129,"context_line":"CONF.register_opts(db_opts)"},{"line_number":130,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":131,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_9e76add5","line":128,"updated":"2016-01-14 12:18:32.000000000","message":"Should be:\n\n    CONF \u003d nova.conf.CONF","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":131,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"},{"line_number":132,"context_line":"CONF.import_opt(\u0027until_refresh\u0027, \u0027nova.quota\u0027)"},{"line_number":133,"context_line":"CONF.import_group(\"profiler\", \"nova.conf\")"},{"line_number":134,"context_line":""},{"line_number":135,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":136,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_5e535539","line":133,"updated":"2016-01-14 12:18:32.000000000","message":"As the options will be available when \"nova.conf\" is imported, that line is not needed anymore.","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"37180a9e35bd1836ef7b5306c1b2f1e058d0ecc8","unresolved":false,"context_lines":[{"line_number":127,"context_line":"CONF.register_opts(db_opts)"},{"line_number":128,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":129,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"},{"line_number":130,"context_line":"CONF.import_opt(\u0027until_refresh\u0027, \u0027nova.quota\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_c7b027e0","side":"PARENT","line":130,"updated":"2016-02-04 11:34:17.000000000","message":"why are you removing that import ?","commit_id":"dcb63f0498c1e41081927ef81448c007b38cd8cd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"80f3d6e0a3168160db3646cbc6e65fa970f7a40b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"CONF.register_opts(db_opts)"},{"line_number":128,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":129,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"},{"line_number":130,"context_line":"CONF.import_opt(\u0027until_refresh\u0027, \u0027nova.quota\u0027)"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_9f902245","side":"PARENT","line":130,"in_reply_to":"5a5ae5dd_c7b027e0","updated":"2016-02-04 17:47:56.000000000","message":"In case it wasn\u0027t clear, same as John\u0027s note opposite (bp/centralize-config-options)","commit_id":"dcb63f0498c1e41081927ef81448c007b38cd8cd"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"37180a9e35bd1836ef7b5306c1b2f1e058d0ecc8","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                    \u0027SQLAlchemy.\u0027),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":130,"context_line":"CONF.register_opts(db_opts)"},{"line_number":131,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":132,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_6454d120","line":129,"updated":"2016-02-04 11:34:17.000000000","message":"I\u0027m missing why you need to change that ?","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"a1d2fc1fd2dd38fe73e94f4722b2481df06a0f99","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                    \u0027SQLAlchemy.\u0027),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":130,"context_line":"CONF.register_opts(db_opts)"},{"line_number":131,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":132,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_5a688e87","line":129,"in_reply_to":"5a5ae5dd_07ef1f88","updated":"2016-02-04 11:47:25.000000000","message":"Oh right correct I forgot the new pattern...","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b579c06c43c341685b91256325b2a470a7e5e541","unresolved":false,"context_lines":[{"line_number":126,"context_line":"                    \u0027SQLAlchemy.\u0027),"},{"line_number":127,"context_line":"]"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d nova.conf.CONF"},{"line_number":130,"context_line":"CONF.register_opts(db_opts)"},{"line_number":131,"context_line":"CONF.register_opts(oslo_db_options.database_opts, \u0027database\u0027)"},{"line_number":132,"context_line":"CONF.register_opts(api_db_opts, group\u003d\u0027api_database\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_07ef1f88","line":129,"in_reply_to":"5a5ae5dd_6454d120","updated":"2016-02-04 11:37:46.000000000","message":"This is the new style import, where you don\u0027t need to use import_opt, and gets you the os profiler options imported more simply.\n\nGive we are moving to this across the rest of the code base, I wasn\u0027t too worried by that.","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"}],"nova/manager.py":[{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"97591459f64ed4d5ef020ef19957c01c7e400480","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        super(PeriodicTasks, self).__init__(CONF)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"class ManagerMeta(profiler.TracedMeta, type(PeriodicTasks)):"},{"line_number":75,"context_line":"    pass"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a7e1126_4244061a","line":74,"updated":"2015-12-18 13:07:37.000000000","message":"this metaclass is added in https://review.openstack.org/#/c/259422/ commit","commit_id":"23459a31eab5f1e53cb115ba36289f67ab499c2f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"37180a9e35bd1836ef7b5306c1b2f1e058d0ecc8","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class ManagerMeta(profiler.TracedMeta, type(PeriodicTasks)):"},{"line_number":73,"context_line":"    pass"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"@six.add_metaclass(ManagerMeta)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_47f3d79e","line":73,"updated":"2016-02-04 11:34:17.000000000","message":"that\u0027s not super explicit what it does. How can we be sure that the interface won\u0027t change with for example __trace_args__ no longer in use?\n\nAt least I feel it\u0027s missing a docstring","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b579c06c43c341685b91256325b2a470a7e5e541","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"class ManagerMeta(profiler.TracedMeta, type(PeriodicTasks)):"},{"line_number":73,"context_line":"    pass"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"@six.add_metaclass(ManagerMeta)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_2799fb1f","line":73,"in_reply_to":"5a5ae5dd_47f3d79e","updated":"2016-02-04 11:37:46.000000000","message":"True, its worth a quick explanation","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"c9acafba49a12aa784ebbdd5f5c3adf4489fc999","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    Adding of this metaclass requires to set __trace_args__ attribute to the"},{"line_number":79,"context_line":"    class we want to modify. __trace_args__ is the dictionary with one"},{"line_number":80,"context_line":"    mandatory key included - \"name\", that will define name of action to be"},{"line_number":81,"context_line":"    traced - E.g. wsgi, rpc, db, etc..."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    The OSprofiler-based tracing, although, will only happen if profiler"},{"line_number":84,"context_line":"    instance was initiated somewhere before in the thread, that can only happen"}],"source_content_type":"text/x-python","patch_set":59,"id":"ba5201f7_7aa8098d","line":81,"updated":"2017-01-11 16:16:10.000000000","message":"I think this is trying to say something like this:\n\nAdding this metaclass requires that the __trace_args__ attribute be added to the class we want to modify. That attribute is a dictionary with one mandatory key: \"name\". \"name\" defines the name of the action to be traced (e.g., wsgi, rpc, db).\n\n?","commit_id":"2b7d677dde78bfb5cb764d01ced1345f1af0299c"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"a0ca0b6813604e1f88bdbfe711993b2f75a474d7","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    Adding of this metaclass requires to set __trace_args__ attribute to the"},{"line_number":79,"context_line":"    class we want to modify. __trace_args__ is the dictionary with one"},{"line_number":80,"context_line":"    mandatory key included - \"name\", that will define name of action to be"},{"line_number":81,"context_line":"    traced - E.g. wsgi, rpc, db, etc..."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    The OSprofiler-based tracing, although, will only happen if profiler"},{"line_number":84,"context_line":"    instance was initiated somewhere before in the thread, that can only happen"}],"source_content_type":"text/x-python","patch_set":59,"id":"9a57fde8_2902413f","line":81,"in_reply_to":"ba5201f7_7aa8098d","updated":"2017-01-12 10:30:28.000000000","message":"Agreed. Will update the change, if there are more comments. Or just upload a follow-up fix.","commit_id":"2b7d677dde78bfb5cb764d01ced1345f1af0299c"}],"nova/opts.py":[{"author":{"_account_id":11303,"name":"Markus Zoeller (markus_z)","email":"mzoeller@linux.vnet.ibm.com","username":"mzoeller"},"change_message_id":"8c8b15f921435b5f1743ec08467230dde65edc8a","unresolved":false,"context_lines":[{"line_number":111,"context_line":"             nova.keymgr.conf_key_mgr.key_mgr_opts,"},{"line_number":112,"context_line":"             nova.keymgr.keymgr_opts,"},{"line_number":113,"context_line":"         )),"},{"line_number":114,"context_line":"        nova.conf.profiler_options.list_opts(),"},{"line_number":115,"context_line":"        (\u0027rdp\u0027, nova.rdp.rdp_opts),"},{"line_number":116,"context_line":"        (\u0027spice\u0027,"},{"line_number":117,"context_line":"         itertools.chain("}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_1e9cfd0d","line":114,"updated":"2016-01-14 12:18:32.000000000","message":"This is not needed anymore. The \"nova/conf/opts.py\" reads that automatically from your module \"nova/conf/profiler_options\". That\u0027s possible since commit d4ae85db7","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b60dd9ca693582c158aaf5860719a41436546e19","unresolved":false,"context_lines":[{"line_number":111,"context_line":"             nova.keymgr.conf_key_mgr.key_mgr_opts,"},{"line_number":112,"context_line":"             nova.keymgr.keymgr_opts,"},{"line_number":113,"context_line":"         )),"},{"line_number":114,"context_line":"        nova.conf.profiler_options.list_opts(),"},{"line_number":115,"context_line":"        (\u0027rdp\u0027, nova.rdp.rdp_opts),"},{"line_number":116,"context_line":"        (\u0027spice\u0027,"},{"line_number":117,"context_line":"         itertools.chain("}],"source_content_type":"text/x-python","patch_set":16,"id":"da6ed579_8f98b5c1","line":114,"in_reply_to":"da6ed579_1e9cfd0d","updated":"2016-01-14 12:41:56.000000000","message":"thanks!","commit_id":"b7b74abe147964b502bfc658fba86da50b32be82"}],"nova/rpc.py":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        prof \u003d profiler.get()"},{"line_number":117,"context_line":"        if prof:"},{"line_number":118,"context_line":"            trace_info \u003d {"},{"line_number":119,"context_line":"                \"hmac_key\": prof.hmac_key,"},{"line_number":120,"context_line":"                \"base_id\": prof.get_base_id(),"},{"line_number":121,"context_line":"                \"parent_id\": prof.get_id()"},{"line_number":122,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_7d3faed6","line":119,"updated":"2015-12-10 09:37:45.000000000","message":"Where exactly is the hmac_key validated?","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"54506a9a9a6796c56bcac23e8de26277a54dddf9","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        prof \u003d profiler.get()"},{"line_number":117,"context_line":"        if prof:"},{"line_number":118,"context_line":"            trace_info \u003d {"},{"line_number":119,"context_line":"                \"hmac_key\": prof.hmac_key,"},{"line_number":120,"context_line":"                \"base_id\": prof.get_base_id(),"},{"line_number":121,"context_line":"                \"parent_id\": prof.get_id()"},{"line_number":122,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_d2d8f981","line":119,"in_reply_to":"7a740942_7d3faed6","updated":"2015-12-10 14:52:17.000000000","message":"Dims, I decided to draw some chart - http://paste.openstack.org/show/Lg2U2b4rULeoAhDNKBMF/\n\nIn fact I mentioned with high precision only first several steps, but in fact all of them are similar. On every profiling step service that is using the profiler gets the signed trace_id, parent_id, etc. - in form of HTTP headers or RPC message info, for instance. And every service tries to unsign the signed info it got with the HMAC key this specific service is having in its own config. So to trace the request through  all the cloud we need to have the same HMAC key defined in all configuration files and in the very first step we\u0027re doing in CLI.\n\nHere is this place: https://github.com/openstack/osprofiler/blob/master/osprofiler/web.py#L104-L109","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"2591b801c692b6ac02440678c3db01a2a74d1447","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        prof \u003d profiler.get()"},{"line_number":117,"context_line":"        if prof:"},{"line_number":118,"context_line":"            trace_info \u003d {"},{"line_number":119,"context_line":"                \"hmac_key\": prof.hmac_key,"},{"line_number":120,"context_line":"                \"base_id\": prof.get_base_id(),"},{"line_number":121,"context_line":"                \"parent_id\": prof.get_id()"},{"line_number":122,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_b3b98517","line":119,"in_reply_to":"7a740942_d2d8f981","updated":"2015-12-11 09:08:05.000000000","message":"Thanks Dina. this helps","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5fd09c7bf8a4218d7476eef3b68b875d7990119b","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"base_id\": prof.get_base_id(),"},{"line_number":156,"context_line":"                \"parent_id\": prof.get_id()"},{"line_number":157,"context_line":"            }"},{"line_number":158,"context_line":"            _context.update({\"trace_info\": trace_info})"},{"line_number":159,"context_line":"        return _context"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def deserialize_context(self, context):"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_dcca684f","line":158,"updated":"2016-02-03 17:38:40.000000000","message":"Could we add a TODO about moving this into os-profiler?\n\nIt feels like it should be versioned, or somehow impacting the RPC versioning, but thats probably overkill.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f0c3543ea15492c1b33d27891ce9e5fc41022982","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"base_id\": prof.get_base_id(),"},{"line_number":156,"context_line":"                \"parent_id\": prof.get_id()"},{"line_number":157,"context_line":"            }"},{"line_number":158,"context_line":"            _context.update({\"trace_info\": trace_info})"},{"line_number":159,"context_line":"        return _context"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def deserialize_context(self, context):"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_15abce1e","line":158,"in_reply_to":"5a5ae5dd_66e71ae5","updated":"2016-02-04 10:42:12.000000000","message":"its mostly upgrade issues we hit, if we don\u0027t worry about versioning. We do support live rolling upgrades in nova, so it can get very hairy, if you don\u0027t take care. But we can treat no version as the first version, and hope for the best.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"d18fb804e726729aef9f8f954f149cb74b0aa78f","unresolved":false,"context_lines":[{"line_number":155,"context_line":"                \"base_id\": prof.get_base_id(),"},{"line_number":156,"context_line":"                \"parent_id\": prof.get_id()"},{"line_number":157,"context_line":"            }"},{"line_number":158,"context_line":"            _context.update({\"trace_info\": trace_info})"},{"line_number":159,"context_line":"        return _context"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"    def deserialize_context(self, context):"}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_66e71ae5","line":158,"in_reply_to":"5a5ae5dd_dcca684f","updated":"2016-02-03 20:09:24.000000000","message":"thanks, will add the note. As for the versioning it seems to be an overkill mentioning the fact that library/it\u0027s usage will be modified, but no significant RPC API changes will be met.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e713bc35f83cae7cc109932b856e55be88314dc3","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        _context \u003d context.to_dict()"},{"line_number":151,"context_line":"        prof \u003d profiler.get()"},{"line_number":152,"context_line":"        if prof:"},{"line_number":153,"context_line":"            # fixme(DinaBelova): we\u0027ll add profiler.get_info() method"},{"line_number":154,"context_line":"            # to extract this info -\u003e we\u0027ll need to update these lines"},{"line_number":155,"context_line":"            trace_info \u003d {"},{"line_number":156,"context_line":"                \"hmac_key\": prof.hmac_key,"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a5ae5dd_95125e61","line":153,"updated":"2016-02-04 10:45:20.000000000","message":"nit: its usually FIXME, but thats OK I think.","commit_id":"750a787f0151e3fd27c33aa1c4e9a686120f3d4c"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6afb14c60896061df97a9b0c39412f10d75eedab","unresolved":false,"context_lines":[{"line_number":157,"context_line":"            _context.update({\"trace_info\": trace_info})"},{"line_number":158,"context_line":"        return _context"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    def deserialize_context(self, context):"},{"line_number":161,"context_line":"        trace_info \u003d context.pop(\"trace_info\", None)"},{"line_number":162,"context_line":"        if trace_info:"},{"line_number":163,"context_line":"            profiler.init(**trace_info)"}],"source_content_type":"text/x-python","patch_set":41,"id":"1a122d0e_0489c426","line":160,"updated":"2016-04-18 09:43:44.000000000","message":"Can we add some unit tests for these two methods?","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"}],"nova/service.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ac98b9a256daf087ebed13efe9391a457c7c28ee","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                help\u003d_(\"If False doesn\u0027t trace SQL requests.\")),"},{"line_number":133,"context_line":"    cfg.StrOpt(\"hmac_keys\", default\u003d\"SECRET_KEY\","},{"line_number":134,"context_line":"               help\u003d_(\"Secret key to use to sign tracing messages.\"))"},{"line_number":135,"context_line":"]"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"CONF \u003d cfg.CONF"},{"line_number":138,"context_line":"CONF.register_opts(service_opts)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_fff6ab5b","line":135,"updated":"2015-12-08 12:39:17.000000000","message":"This new options should really be added in the new central location, but full descriptions of how to use them:\nhttps://github.com/openstack/nova/tree/master/nova/conf","commit_id":"7f04cb39e7f9745e4b7179f608ae008a00c865ce"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"c7c29586e4191dddb632a37c1976a80d564758b2","unresolved":false,"context_lines":[{"line_number":132,"context_line":"                help\u003d_(\"If False doesn\u0027t trace SQL requests.\")),"},{"line_number":133,"context_line":"    cfg.StrOpt(\"hmac_keys\", default\u003d\"SECRET_KEY\","},{"line_number":134,"context_line":"               help\u003d_(\"Secret key to use to sign tracing messages.\"))"},{"line_number":135,"context_line":"]"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"CONF \u003d cfg.CONF"},{"line_number":138,"context_line":"CONF.register_opts(service_opts)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a740942_ca376bfd","line":135,"in_reply_to":"7a740942_fff6ab5b","updated":"2015-12-08 12:55:03.000000000","message":"thank, you, will go through it and fix.","commit_id":"7f04cb39e7f9745e4b7179f608ae008a00c865ce"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":125,"context_line":"               help\u003d\u0027Maximum time since last check-in for up service\u0027),"},{"line_number":126,"context_line":"    ]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d cfg.CONF"},{"line_number":130,"context_line":"CONF.register_opts(service_opts)"},{"line_number":131,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_3dc7e646","line":128,"updated":"2015-12-10 09:37:45.000000000","message":"unrelated change?","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":125,"context_line":"               help\u003d\u0027Maximum time since last check-in for up service\u0027),"},{"line_number":126,"context_line":"    ]"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"CONF \u003d cfg.CONF"},{"line_number":130,"context_line":"CONF.register_opts(service_opts)"},{"line_number":131,"context_line":"CONF.import_opt(\u0027host\u0027, \u0027nova.netconf\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_f1ede98e","line":128,"in_reply_to":"7a740942_3dc7e646","updated":"2015-12-10 17:37:36.000000000","message":"yep, will remove","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":168,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":169,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":170,"context_line":"        LOG.warning(_LW(\"OSProfiler is enabled.\\n\""},{"line_number":171,"context_line":"                        \"It means that person who knows\""},{"line_number":172,"context_line":"                        \"any of hmac_keys that are specified in \""},{"line_number":173,"context_line":"                        \"nova.conf can trace his requests. \\n\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_a03649b2","line":170,"updated":"2015-12-10 09:37:45.000000000","message":"How does this sound?\n\n\"OSProfiler is currently enabled. Anyone with access to the hmac_key config option (under [profiler] group) can use osprofiler commands to trace their requests. To disable OSProfiler, you can set enabled  config option to \u0027false\u0027 in nova.conf configuration file.\"","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"2591b801c692b6ac02440678c3db01a2a74d1447","unresolved":false,"context_lines":[{"line_number":167,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":168,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":169,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":170,"context_line":"        LOG.warning(_LW(\"OSProfiler is enabled.\\n\""},{"line_number":171,"context_line":"                        \"It means that person who knows\""},{"line_number":172,"context_line":"                        \"any of hmac_keys that are specified in \""},{"line_number":173,"context_line":"                        \"nova.conf can trace his requests. \\n\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_d34bf129","line":170,"in_reply_to":"7a740942_a03649b2","updated":"2015-12-11 09:08:05.000000000","message":"Dina. ping on this comment","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"6425c366821b9b89dd41e479b5757bd0bd887a4a","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        # Pull back actual port used"},{"line_number":404,"context_line":"        self.port \u003d self.server.port"},{"line_number":405,"context_line":"        self.backdoor_port \u003d None"},{"line_number":406,"context_line":"        setup_profiler(name, self.host)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def reset(self):"},{"line_number":409,"context_line":"        \"\"\"Reset server greenpool size to default."}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_a77618a2","line":406,"updated":"2016-01-14 04:48:45.000000000","message":"Really not sure that we need this line. \nWe are already doing this in parent class Service, however for some reason I don\u0027t see here __init__() \n\nmaybe it\u0027s a bug?","commit_id":"192da6e0e9ee9b49fa1edcec0c4876d2d63bc101"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"96c2ebaa8ba983f21a2340f6c65a380a99b8f929","unresolved":false,"context_lines":[{"line_number":403,"context_line":"        # Pull back actual port used"},{"line_number":404,"context_line":"        self.port \u003d self.server.port"},{"line_number":405,"context_line":"        self.backdoor_port \u003d None"},{"line_number":406,"context_line":"        setup_profiler(name, self.host)"},{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def reset(self):"},{"line_number":409,"context_line":"        \"\"\"Reset server greenpool size to default."}],"source_content_type":"text/x-python","patch_set":15,"id":"da6ed579_f367ed4a","line":406,"in_reply_to":"da6ed579_a77618a2","updated":"2016-01-14 09:11:50.000000000","message":"it\u0027s not child of local Service class, it\u0027s inherited from service.Service - from oslo_service import service","commit_id":"192da6e0e9ee9b49fa1edcec0c4876d2d63bc101"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3116c49445c682348f675d22f56d9b7127c51d94","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def setup_profiler(binary, host):"},{"line_number":151,"context_line":"    if CONF.profiler.enabled:"},{"line_number":152,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":153,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":154,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":155,"context_line":"        osprofiler.notifier.set(_notifier)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_aa9ff84e","line":152,"updated":"2016-01-21 18:17:19.000000000","message":"Should osprofiler not have a facade to make this really easy to do?","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7e0acf323a3f6b4a6f72a11fd7bd03f656c24212","unresolved":false,"context_lines":[{"line_number":149,"context_line":""},{"line_number":150,"context_line":"def setup_profiler(binary, host):"},{"line_number":151,"context_line":"    if CONF.profiler.enabled:"},{"line_number":152,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":153,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":154,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":155,"context_line":"        osprofiler.notifier.set(_notifier)"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_5fc85822","line":152,"in_reply_to":"9a68dd71_aa9ff84e","updated":"2016-01-22 10:16:32.000000000","message":"not yet I guess. @boris?","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3116c49445c682348f675d22f56d9b7127c51d94","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    if CONF.profiler.enabled:"},{"line_number":152,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":153,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":154,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":155,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":156,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":157,"context_line":"        LOG.warning(_LW(\"OSProfiler is enabled.\\n\""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_ca5a6c83","line":154,"updated":"2016-01-21 18:17:19.000000000","message":"We have multiple processes on a single host, so maybe we also need the process id here?\n\nI think using kwargs so its clear what \"nova\" is being used for might be helpful.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7e0acf323a3f6b4a6f72a11fd7bd03f656c24212","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    if CONF.profiler.enabled:"},{"line_number":152,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":153,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":154,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":155,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":156,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":157,"context_line":"        LOG.warning(_LW(\"OSProfiler is enabled.\\n\""}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_9f9490e2","line":154,"in_reply_to":"9a68dd71_ca5a6c83","updated":"2016-01-22 10:16:32.000000000","message":"interesting, I think this can be useful, but I\u0027m not sure that the final trace will look not over-informative. Although I believe it\u0027s important info for sure.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7593b2aafc14069bf86e6646dbdf0c5283187d95","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                        \"if person can trigger profiler, only admin user \""},{"line_number":164,"context_line":"                        \"can retrieve trace information.\\n\""},{"line_number":165,"context_line":"                        \"To disable OSprofiler set in nova.conf:\\n\""},{"line_number":166,"context_line":"                        \"[profiler]\\nenabled\u003dfalse\"))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class Service(service.Service):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_04195d88","line":166,"range":{"start_line":166,"start_character":50,"end_line":166,"end_character":53},"updated":"2016-02-04 11:22:43.000000000","message":"I honestly don\u0027t think we need to log a big scary warning to tell operators that \"there is no security issue\" with enabling the option they just enabled. If we want a warning, it should be placed in the help text of the config option so it is visible in the nova.conf file when the admin turns on the option.","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b579c06c43c341685b91256325b2a470a7e5e541","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                        \"if person can trigger profiler, only admin user \""},{"line_number":164,"context_line":"                        \"can retrieve trace information.\\n\""},{"line_number":165,"context_line":"                        \"To disable OSprofiler set in nova.conf:\\n\""},{"line_number":166,"context_line":"                        \"[profiler]\\nenabled\u003dfalse\"))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class Service(service.Service):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_07615f39","line":166,"range":{"start_line":166,"start_character":50,"end_line":166,"end_character":53},"in_reply_to":"5a5ae5dd_04195d88","updated":"2016-02-04 11:37:46.000000000","message":"True.","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"b50aeb292fadd60b2a2499e3ad1399335523e53b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"                        \"if person can trigger profiler, only admin user \""},{"line_number":164,"context_line":"                        \"can retrieve trace information.\\n\""},{"line_number":165,"context_line":"                        \"To disable OSprofiler set in nova.conf:\\n\""},{"line_number":166,"context_line":"                        \"[profiler]\\nenabled\u003dfalse\"))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class Service(service.Service):"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a5ae5dd_3345a66f","line":166,"range":{"start_line":166,"start_character":50,"end_line":166,"end_character":53},"in_reply_to":"5a5ae5dd_07615f39","updated":"2016-02-04 19:49:00.000000000","message":"well, the config options have the extended description for sure - https://github.com/openstack/osprofiler/blob/master/osprofiler/opts.py\n\nI\u0027ll make these lines not so scary, thanks!","commit_id":"b0205bc35a379778d9db05c9e7e1b926c6b01cdf"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"48ebecb2d57f24315b63c6f234608b37301a0b7f","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":155,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":156,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":157,"context_line":"        LOG.warning(_LW(\"OSProfiler is enabled.\\n\""},{"line_number":158,"context_line":"                        \"To disable OSprofiler set in nova.conf:\\n\""},{"line_number":159,"context_line":"                        \"[profiler]\\nenabled\u003dfalse\"))"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5a5ae5dd_6c3f9824","line":157,"updated":"2016-02-05 13:12:25.000000000","message":"I think this could just be a simple info log. Warning means that admin should turn it off.","commit_id":"8486dfa0bbaf69d2787f979dc20e33aece59a669"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"57c283cce0b5a8951b69e36a86cab7afb43fee56","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":155,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":156,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":157,"context_line":"        LOG.warning(_LW(\"OSProfiler is enabled.\\n\""},{"line_number":158,"context_line":"                        \"To disable OSprofiler set in nova.conf:\\n\""},{"line_number":159,"context_line":"                        \"[profiler]\\nenabled\u003dfalse\"))"},{"line_number":160,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"5a5ae5dd_6c02383f","line":157,"in_reply_to":"5a5ae5dd_6c3f9824","updated":"2016-02-05 13:15:32.000000000","message":"I don\u0027t thnk this message is useful in any way - just delete it.","commit_id":"8486dfa0bbaf69d2787f979dc20e33aece59a669"},{"author":{"_account_id":22478,"name":"Benjamin VanHavermaet","email":"bvanhav@us.ibm.com","username":"bvanhav"},"change_message_id":"f32d77910eb75c18bc427057fccee03fc9b30f4b","unresolved":false,"context_lines":[{"line_number":75,"context_line":"def setup_profiler(binary, host):"},{"line_number":76,"context_line":"    if CONF.profiler.enabled:"},{"line_number":77,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":78,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":79,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":80,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":81,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"}],"source_content_type":"text/x-python","patch_set":43,"id":"bacf61ea_39febb6b","line":78,"updated":"2016-08-03 13:12:37.000000000","message":"This should really pull the connection_string parameter from the conf instead of hard coding it.\n\nAlso the way OSProfiler is setup today, if you try to use a different OSProfiler driver (such as the new mongodb driver) this call won\u0027t work because the other arguments are not keyword arguments.","commit_id":"814636449ac8ad68f9c0351c2a20ccc36954da0d"},{"author":{"_account_id":22478,"name":"Benjamin VanHavermaet","email":"bvanhav@us.ibm.com","username":"bvanhav"},"change_message_id":"46655c6047e5bca48e7fa64c28e3da11a1f76ef8","unresolved":false,"context_lines":[{"line_number":75,"context_line":"def setup_profiler(binary, host):"},{"line_number":76,"context_line":"    if CONF.profiler.enabled:"},{"line_number":77,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":78,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":79,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":80,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":81,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"}],"source_content_type":"text/x-python","patch_set":43,"id":"bacf61ea_3b895327","line":78,"in_reply_to":"bacf61ea_39febb6b","updated":"2016-08-04 13:07:30.000000000","message":"At some point this will need to change to use the initializer in OSProfile (from https://review.openstack.org/#/c/342479)","commit_id":"814636449ac8ad68f9c0351c2a20ccc36954da0d"},{"author":{"_account_id":18247,"name":"Mark Doffman","email":"mdoffman@linux.vnet.ibm.com","username":"doffm"},"change_message_id":"62906e948b09702d11514f597a239dfd0a6371c5","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    if CONF.profiler.enabled:"},{"line_number":77,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":78,"context_line":"            \"Messaging\", messaging, context.get_admin_context().to_dict(),"},{"line_number":79,"context_line":"            rpc.TRANSPORT, \"nova\", binary, host)"},{"line_number":80,"context_line":"        osprofiler.notifier.set(_notifier)"},{"line_number":81,"context_line":"        osprofiler.web.enable(CONF.profiler.hmac_keys)"},{"line_number":82,"context_line":"        LOG.info(_LI(\"OSProfiler is enabled.\"))"}],"source_content_type":"text/x-python","patch_set":43,"id":"bacf61ea_99c36757","line":79,"updated":"2016-08-03 13:09:30.000000000","message":"This needs to change. Its currently hard coding one of the osprofiler drivers when we should be looking at the CONF values and choosing a driver based on the connection string. This will be needed to support mongodb / other osprofiler drivers.","commit_id":"814636449ac8ad68f9c0351c2a20ccc36954da0d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b7f9e97d3d75aeef384ca756364463c92e7ba135","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def setup_profiler(binary, host):"},{"line_number":77,"context_line":"    if osprofiler and CONF.profiler.enabled:"},{"line_number":78,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":79,"context_line":"            CONF.profiler.connection_string,"},{"line_number":80,"context_line":"            messaging\u003dmessaging,"},{"line_number":81,"context_line":"            context\u003dcontext.get_admin_context().to_dict(),"}],"source_content_type":"text/x-python","patch_set":56,"id":"1a6eadb0_a5027c6d","line":78,"updated":"2016-12-14 15:31:25.000000000","message":"Why we are not using the new init_from_conf() method?","commit_id":"284a8c68a4a227aaf050709b1e32d403fe284d13"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"725bb30f7ca69675a085c777d7d5f0f4738a6bdb","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def setup_profiler(binary, host):"},{"line_number":77,"context_line":"    if osprofiler and CONF.profiler.enabled:"},{"line_number":78,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":79,"context_line":"            CONF.profiler.connection_string,"},{"line_number":80,"context_line":"            messaging\u003dmessaging,"},{"line_number":81,"context_line":"            context\u003dcontext.get_admin_context().to_dict(),"}],"source_content_type":"text/x-python","patch_set":56,"id":"1a6eadb0_e6009936","line":78,"in_reply_to":"1a6eadb0_055a504f","updated":"2016-12-16 11:07:59.000000000","message":"I\u0027m all for it, but we need to cut a new release of osprofiler and bump the minimum required version in g-r first. Depends-On is not an option here as we install released versions in the gate.","commit_id":"284a8c68a4a227aaf050709b1e32d403fe284d13"},{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"b64285f33c13179bc12bc21b8f69623dd3136627","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def setup_profiler(binary, host):"},{"line_number":77,"context_line":"    if osprofiler and CONF.profiler.enabled:"},{"line_number":78,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":79,"context_line":"            CONF.profiler.connection_string,"},{"line_number":80,"context_line":"            messaging\u003dmessaging,"},{"line_number":81,"context_line":"            context\u003dcontext.get_admin_context().to_dict(),"}],"source_content_type":"text/x-python","patch_set":56,"id":"1a6eadb0_055a504f","line":78,"in_reply_to":"1a6eadb0_a5027c6d","updated":"2016-12-14 15:41:48.000000000","message":"At *this* time, new style has not been introduced yet.\nBesides, we should follow this patch too [1].\nSo, @Roman, can you update this?\n\n[1] https://review.openstack.org/#/c/408533/ by Vipin","commit_id":"284a8c68a4a227aaf050709b1e32d403fe284d13"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"0f87aa28478fd9dd2fa4025375544dcc6394e3b9","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def setup_profiler(binary, host):"},{"line_number":77,"context_line":"    if osprofiler and CONF.profiler.enabled:"},{"line_number":78,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":79,"context_line":"            CONF.profiler.connection_string,"},{"line_number":80,"context_line":"            messaging\u003dmessaging,"},{"line_number":81,"context_line":"            context\u003dcontext.get_admin_context().to_dict(),"}],"source_content_type":"text/x-python","patch_set":56,"id":"1a6eadb0_e9e5ca08","line":78,"in_reply_to":"1a6eadb0_e6009936","updated":"2016-12-16 11:20:09.000000000","message":"The min osprofiler version is 1.4.0 in g-r and we have the new init method in 1.4.0.\n\nhttps://github.com/openstack/osprofiler/commit/aca7aeb13384bae39172fe1186ea62e58f52e493","commit_id":"284a8c68a4a227aaf050709b1e32d403fe284d13"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"64bd134c835ee907a869a8cdc6a4a76bd33193a8","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"def setup_profiler(binary, host):"},{"line_number":77,"context_line":"    if osprofiler and CONF.profiler.enabled:"},{"line_number":78,"context_line":"        _notifier \u003d osprofiler.notifier.create("},{"line_number":79,"context_line":"            CONF.profiler.connection_string,"},{"line_number":80,"context_line":"            messaging\u003dmessaging,"},{"line_number":81,"context_line":"            context\u003dcontext.get_admin_context().to_dict(),"}],"source_content_type":"text/x-python","patch_set":56,"id":"1a6eadb0_b5dec1da","line":78,"in_reply_to":"1a6eadb0_e9e5ca08","updated":"2016-12-16 12:47:50.000000000","message":"Ah, I was referring to https://review.openstack.org/#/c/408533/\n\ninit_from_conf() looks good. Will do! thanks!","commit_id":"284a8c68a4a227aaf050709b1e32d403fe284d13"}],"nova/test.py":[{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"eb7019e6271c719ec20dd0d419b9b2c80acd95c4","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self.policy \u003d self.useFixture(policy_fixture.PolicyFixture())"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        self.useFixture(nova_fixtures.PoisonFunctions())"},{"line_number":238,"context_line":"        CONF.set_override(\u0027enabled\u0027, False, \u0027profiler\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _restore_obj_registry(self):"},{"line_number":241,"context_line":"        objects_base.NovaObjectRegistry._registry._obj_classes \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_60086129","line":238,"updated":"2015-12-10 09:37:45.000000000","message":"This is false by default. Do we really need this line?","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"619504431b82fb470fee3a33e749e1d5f0c5140b","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self.policy \u003d self.useFixture(policy_fixture.PolicyFixture())"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        self.useFixture(nova_fixtures.PoisonFunctions())"},{"line_number":238,"context_line":"        CONF.set_override(\u0027enabled\u0027, False, \u0027profiler\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _restore_obj_registry(self):"},{"line_number":241,"context_line":"        objects_base.NovaObjectRegistry._registry._obj_classes \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_f19409e9","line":238,"in_reply_to":"7a740942_60086129","updated":"2015-12-10 17:37:36.000000000","message":"hm, interesting, I copied it from the previous abandoned commit (without too much thinking on this, in fact). Will check.","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"2591b801c692b6ac02440678c3db01a2a74d1447","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        self.policy \u003d self.useFixture(policy_fixture.PolicyFixture())"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"        self.useFixture(nova_fixtures.PoisonFunctions())"},{"line_number":238,"context_line":"        CONF.set_override(\u0027enabled\u0027, False, \u0027profiler\u0027)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    def _restore_obj_registry(self):"},{"line_number":241,"context_line":"        objects_base.NovaObjectRegistry._registry._obj_classes \u003d \\"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a740942_535e21ea","line":238,"in_reply_to":"7a740942_f19409e9","updated":"2015-12-11 09:08:05.000000000","message":"ack","commit_id":"d0fdadd1ade0aaed43a125ccbaef197a88f9464c"}],"nova/tests/unit/fake_notifier.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"294e142c98ef1f467da58f98173fe1413d6e3abb","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                          payload, ctxt)"},{"line_number":69,"context_line":"        NOTIFICATIONS.append(msg)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def info(self, ctxt, event_type, payload):"},{"line_number":72,"context_line":"        self._notify(\"INFO\", ctxt, event_type, payload)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"5a5ae5dd_50a0aff4","line":71,"updated":"2016-02-03 12:18:51.000000000","message":"Why do you need to override the info function generated by L49?","commit_id":"18fb56f382f35fafc9b99ee7d38b9fac91377b0a"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"f832e0c3e688a7a1dd789cb61d6493cbd6934772","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                          payload, ctxt)"},{"line_number":69,"context_line":"        NOTIFICATIONS.append(msg)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    def info(self, ctxt, event_type, payload):"},{"line_number":72,"context_line":"        self._notify(\"INFO\", ctxt, event_type, payload)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":26,"id":"5a5ae5dd_75d82f54","line":71,"in_reply_to":"5a5ae5dd_50a0aff4","updated":"2016-02-03 16:00:40.000000000","message":"I feel like it was left from very first version of the change, I\u0027ll check it.","commit_id":"18fb56f382f35fafc9b99ee7d38b9fac91377b0a"}],"nova/tests/unit/test_rpc.py":[{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"fd8b74d9ca2602b80d8fc846b0db6128ad7819c6","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        context \u003d mock.Mock()"},{"line_number":416,"context_line":"        context.to_dict.return_value \u003d {\u0027project_id\u0027: \u0027test\u0027}"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        self.assertEqual({\u0027project_id\u0027: \u0027test\u0027,"},{"line_number":419,"context_line":"                          \u0027trace_info\u0027: {"},{"line_number":420,"context_line":"                              \u0027hmac_key\u0027: \u0027swordfish\u0027,"},{"line_number":421,"context_line":"                              \u0027base_id\u0027: \u0027baseid\u0027,"},{"line_number":422,"context_line":"                              \u0027parent_id\u0027: \u0027parentid\u0027}},"},{"line_number":423,"context_line":"                          self.ser.serialize_context(context))"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @mock.patch(\u0027nova.rpc.profiler\u0027)"}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_f65e4378","line":422,"range":{"start_line":418,"start_character":25,"end_line":422,"end_character":55},"updated":"2016-11-30 07:01:50.000000000","message":"This one should be re-formatted --\u003e easy to read.\n{\n    \u0027project_id\u0027: \u0027test\u0027,\n    \u0027trace_info\u0027: {\n        \u0027hmac_key\u0027: \u0027swordfish\u0027,\n        \u0027base_id\u0027: \u0027baseid\u0027,\n        \u0027parent_id\u0027: \u0027parentid\u0027\n    }\n}","commit_id":"4abf56c7b0a47f37a4e5b9feed4b822414d8dced"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"c756620bb300b20a3f196445e5bed041eaf39e09","unresolved":false,"context_lines":[{"line_number":415,"context_line":"        context \u003d mock.Mock()"},{"line_number":416,"context_line":"        context.to_dict.return_value \u003d {\u0027project_id\u0027: \u0027test\u0027}"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"        self.assertEqual({\u0027project_id\u0027: \u0027test\u0027,"},{"line_number":419,"context_line":"                          \u0027trace_info\u0027: {"},{"line_number":420,"context_line":"                              \u0027hmac_key\u0027: \u0027swordfish\u0027,"},{"line_number":421,"context_line":"                              \u0027base_id\u0027: \u0027baseid\u0027,"},{"line_number":422,"context_line":"                              \u0027parent_id\u0027: \u0027parentid\u0027}},"},{"line_number":423,"context_line":"                          self.ser.serialize_context(context))"},{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @mock.patch(\u0027nova.rpc.profiler\u0027)"}],"source_content_type":"text/x-python","patch_set":55,"id":"3a71b18c_18101001","line":422,"range":{"start_line":418,"start_character":25,"end_line":422,"end_character":55},"in_reply_to":"5a74a57a_f65e4378","updated":"2016-12-02 15:16:28.000000000","message":"I\u0027d prefer to leave this as is, unless you insist.","commit_id":"4abf56c7b0a47f37a4e5b9feed4b822414d8dced"},{"author":{"_account_id":23630,"name":"Tovin Seven","email":"tovin07@gmail.com","username":"tovin07"},"change_message_id":"fd8b74d9ca2602b80d8fc846b0db6128ad7819c6","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @mock.patch(\u0027nova.rpc.profiler\u0027)"},{"line_number":426,"context_line":"    def test_deserialize_context(self, mock_profiler):"},{"line_number":427,"context_line":"        serialized \u003d {\u0027project_id\u0027: \u0027test\u0027,"},{"line_number":428,"context_line":"                      \u0027trace_info\u0027: {"},{"line_number":429,"context_line":"                          \u0027hmac_key\u0027: \u0027swordfish\u0027,"},{"line_number":430,"context_line":"                          \u0027base_id\u0027: \u0027baseid\u0027,"},{"line_number":431,"context_line":"                          \u0027parent_id\u0027: \u0027parentid\u0027}}"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        context \u003d self.ser.deserialize_context(serialized)"},{"line_number":434,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"5a74a57a_565e1777","line":431,"range":{"start_line":427,"start_character":21,"end_line":431,"end_character":51},"updated":"2016-11-30 07:01:50.000000000","message":"This one, too.","commit_id":"4abf56c7b0a47f37a4e5b9feed4b822414d8dced"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"c756620bb300b20a3f196445e5bed041eaf39e09","unresolved":false,"context_lines":[{"line_number":424,"context_line":""},{"line_number":425,"context_line":"    @mock.patch(\u0027nova.rpc.profiler\u0027)"},{"line_number":426,"context_line":"    def test_deserialize_context(self, mock_profiler):"},{"line_number":427,"context_line":"        serialized \u003d {\u0027project_id\u0027: \u0027test\u0027,"},{"line_number":428,"context_line":"                      \u0027trace_info\u0027: {"},{"line_number":429,"context_line":"                          \u0027hmac_key\u0027: \u0027swordfish\u0027,"},{"line_number":430,"context_line":"                          \u0027base_id\u0027: \u0027baseid\u0027,"},{"line_number":431,"context_line":"                          \u0027parent_id\u0027: \u0027parentid\u0027}}"},{"line_number":432,"context_line":""},{"line_number":433,"context_line":"        context \u003d self.ser.deserialize_context(serialized)"},{"line_number":434,"context_line":""}],"source_content_type":"text/x-python","patch_set":55,"id":"3a71b18c_38130c0f","line":431,"range":{"start_line":427,"start_character":21,"end_line":431,"end_character":51},"in_reply_to":"5a74a57a_565e1777","updated":"2016-12-02 15:16:28.000000000","message":"ditto","commit_id":"4abf56c7b0a47f37a4e5b9feed4b822414d8dced"}],"nova/utils.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"3116c49445c682348f675d22f56d9b7127c51d94","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"    return value"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"def _serialize_profile_info():"},{"line_number":1144,"context_line":"    prof \u003d profiler.get()"},{"line_number":1145,"context_line":"    trace_info \u003d None"},{"line_number":1146,"context_line":"    if prof:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_6ad7c0ed","line":1143,"updated":"2016-01-21 18:17:19.000000000","message":"Isn\u0027t this a cut and paste from here?\nhttps://review.openstack.org/#/c/254703/22/nova/rpc.py\n\nCan\u0027t this come from osprofiler somehow? prof.get_info_dict() or something?","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6f462eacb8196d5732e3037c8235cf1ffa61f646","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"    return value"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"def _serialize_profile_info():"},{"line_number":1144,"context_line":"    prof \u003d profiler.get()"},{"line_number":1145,"context_line":"    trace_info \u003d None"},{"line_number":1146,"context_line":"    if prof:"}],"source_content_type":"text/x-python","patch_set":22,"id":"7a5de9d1_9cb9cb17","line":1143,"in_reply_to":"9a68dd71_3f480487","updated":"2016-01-31 12:01:41.000000000","message":"cool.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"7e0acf323a3f6b4a6f72a11fd7bd03f656c24212","unresolved":false,"context_lines":[{"line_number":1140,"context_line":"    return value"},{"line_number":1141,"context_line":""},{"line_number":1142,"context_line":""},{"line_number":1143,"context_line":"def _serialize_profile_info():"},{"line_number":1144,"context_line":"    prof \u003d profiler.get()"},{"line_number":1145,"context_line":"    trace_info \u003d None"},{"line_number":1146,"context_line":"    if prof:"}],"source_content_type":"text/x-python","patch_set":22,"id":"9a68dd71_3f480487","line":1143,"in_reply_to":"9a68dd71_6ad7c0ed","updated":"2016-01-22 10:16:32.000000000","message":"heh, not yet sir, although this will be cool. I\u0027ll add this helper.","commit_id":"2d02254d67f8b48d60674e0f59fb7715f8483c47"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"5fd09c7bf8a4218d7476eef3b68b875d7990119b","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            \"hmac_key\": prof.hmac_key,"},{"line_number":1149,"context_line":"            \"base_id\": prof.get_base_id(),"},{"line_number":1150,"context_line":"            \"parent_id\": prof.get_id()"},{"line_number":1151,"context_line":"        }"},{"line_number":1152,"context_line":"    return trace_info"},{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_170f7be2","line":1151,"updated":"2016-02-03 17:38:40.000000000","message":"would like the todo to get this from os-profiler here as well really.","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"3cd638d1c2072c616497dfea56acc5d28596fb57","unresolved":false,"context_lines":[{"line_number":1148,"context_line":"            \"hmac_key\": prof.hmac_key,"},{"line_number":1149,"context_line":"            \"base_id\": prof.get_base_id(),"},{"line_number":1150,"context_line":"            \"parent_id\": prof.get_id()"},{"line_number":1151,"context_line":"        }"},{"line_number":1152,"context_line":"    return trace_info"},{"line_number":1153,"context_line":""},{"line_number":1154,"context_line":""}],"source_content_type":"text/x-python","patch_set":27,"id":"5a5ae5dd_6635da44","line":1151,"in_reply_to":"5a5ae5dd_170f7be2","updated":"2016-02-03 20:09:55.000000000","message":"ack","commit_id":"c00655d418889a99590365c1ad66270c74597195"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"e713bc35f83cae7cc109932b856e55be88314dc3","unresolved":false,"context_lines":[{"line_number":1144,"context_line":"    prof \u003d profiler.get()"},{"line_number":1145,"context_line":"    trace_info \u003d None"},{"line_number":1146,"context_line":"    if prof:"},{"line_number":1147,"context_line":"        # fixme(DinaBelova): we\u0027ll add profiler.get_info() method"},{"line_number":1148,"context_line":"        # to extract this info -\u003e we\u0027ll need to update these lines"},{"line_number":1149,"context_line":"        trace_info \u003d {"},{"line_number":1150,"context_line":"            \"hmac_key\": prof.hmac_key,"}],"source_content_type":"text/x-python","patch_set":28,"id":"5a5ae5dd_d0ff84ff","line":1147,"updated":"2016-02-04 10:45:20.000000000","message":"Nit: same as previous comment.","commit_id":"750a787f0151e3fd27c33aa1c4e9a686120f3d4c"}],"releasenotes/notes/add-osprofiler-support-b04f1e4cfa550440.yaml":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"6afb14c60896061df97a9b0c39412f10d75eedab","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  - OSprofiler support was introduced. To allow its usage the api-paste.ini"},{"line_number":24,"context_line":"    file needs to be modified to contain osprofiler middleware. Also"},{"line_number":25,"context_line":"    `[profiler]` section needs to be added to the nova.conf file with"},{"line_number":26,"context_line":"    `enabled`, `hmac_keys` and `trace_sqlalchemy` flags defined."},{"line_number":27,"context_line":"security:"},{"line_number":28,"context_line":"  - OSprofiler support requires passing of trace information"},{"line_number":29,"context_line":"    between various OpenStack services. This information is"}],"source_content_type":"text/x-yaml","patch_set":41,"id":"1a122d0e_44b57cec","line":26,"updated":"2016-04-18 09:43:44.000000000","message":"I am not sure this needs to be in upgrade, its more a features note.\n\nMore importantly, I have noticed this section doesn\u0027t yet appear in the generated sample config:\nhttp://docs-draft.openstack.org/03/254703/40/check/gate-nova-docs/8d9d429//doc/build/html/sample_config.html\n\nI think thats because we need an entry in here, for the appropriate bits: https://git.openstack.org/cgit/openstack/nova/tree/setup.cfg#n28\nBut I am not 100% sure.","commit_id":"24ab8c334e5392b61e771bb32771d5ba658c0b92"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3341a5fc424d09bba4bc681ab74e7f2a7d082115","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    `$ osprofiler trace show \u003ctrace_id\u003e --html --out result.html`"},{"line_number":22,"context_line":"upgrade:"},{"line_number":23,"context_line":"  - OSprofiler support was introduced. To allow its usage the api-paste.ini"},{"line_number":24,"context_line":"    file needs to be modified to contain osprofiler middleware. Also"},{"line_number":25,"context_line":"    `[profiler]` section needs to be added to the nova.conf file with"},{"line_number":26,"context_line":"    `enabled`, `hmac_keys` and `trace_sqlalchemy` flags defined."},{"line_number":27,"context_line":"security:"},{"line_number":28,"context_line":"  - OSprofiler support requires passing of trace information"},{"line_number":29,"context_line":"    between various OpenStack services. This information is"}],"source_content_type":"text/x-yaml","patch_set":46,"id":"fa7ab95a_f6631618","line":26,"range":{"start_line":24,"start_character":64,"end_line":26,"end_character":64},"updated":"2016-09-02 14:38:55.000000000","message":"If these are defined in osprofiler, we want to get them hooked into the nova.conf.sample, which I think you do here:\n\nhttps://github.com/openstack/nova/blob/master/etc/nova/nova-config-generator.conf\n\nSo they show up here:\n\nhttp://docs.openstack.org/developer/nova/sample_config.html\n\nThat might require","commit_id":"19990e6b40230fdca7466f2e569d3a9f0ff91c1f"}],"requirements.txt":[{"author":{"_account_id":14131,"name":"shaohef","email":"shaohe.feng@intel.com","username":"shaohefeng"},"change_message_id":"80f82d3039bfbe78e58c1d9b32dc6a1d09463194","unresolved":false,"context_lines":[{"line_number":47,"context_line":"oslo.policy\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":48,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.service\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":50,"context_line":"osprofiler\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":51,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":52,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":53,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":26,"id":"5a5ae5dd_278dc031","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":30},"updated":"2016-02-03 09:44:17.000000000","message":"you should upgrade the requirement project first.","commit_id":"18fb56f382f35fafc9b99ee7d38b9fac91377b0a"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"ac960c20c53a15f4be17306319fd2740e802c05e","unresolved":false,"context_lines":[{"line_number":47,"context_line":"oslo.policy\u003e\u003d0.5.0 # Apache-2.0"},{"line_number":48,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":49,"context_line":"oslo.service\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":50,"context_line":"osprofiler\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":51,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":52,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":53,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":26,"id":"5a5ae5dd_95204bf9","line":50,"range":{"start_line":50,"start_character":0,"end_line":50,"end_character":30},"in_reply_to":"5a5ae5dd_278dc031","updated":"2016-02-03 16:04:26.000000000","message":"the requirements change was merged.","commit_id":"18fb56f382f35fafc9b99ee7d38b9fac91377b0a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"350e689a8683d8b4ccc612e5476876e2f72d8493","unresolved":false,"context_lines":[{"line_number":49,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":50,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":51,"context_line":"oslo.service\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":52,"context_line":"osprofiler\u003e\u003d1.0.1 # Apache-2.0"},{"line_number":53,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":44,"id":"3ac371cc_75e3aba4","line":52,"updated":"2016-08-17 15:18:55.000000000","message":"This should probably live in setup.cfg under extras, so if you want to install nova with osprofiler you can do something like: pip install nova[\u0027osprofiler\u0027]\n\nsomething like that","commit_id":"a7314a369011c49122c0c4721bdb3b0cc15638db"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"8972930e42a9f0ef3b416f71886fcd3b26458902","unresolved":false,"context_lines":[{"line_number":49,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":50,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":51,"context_line":"oslo.service\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":52,"context_line":"osprofiler\u003e\u003d1.0.1 # Apache-2.0"},{"line_number":53,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":44,"id":"1ac06dbe_b478eef3","line":52,"in_reply_to":"1ac06dbe_58945636","updated":"2016-08-21 04:43:10.000000000","message":"Matt, \n\n1) I really don\u0027t understand how rally is related to this patch and osprofiler (these are absolutely separated projects) \n\n2) Yes my previous comment explains exactly why creating passthrough decorators is very bad idea in case of OpenStack.","commit_id":"a7314a369011c49122c0c4721bdb3b0cc15638db"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"31a30d7942bf4f7ad5fd7edec54d050d676517b1","unresolved":false,"context_lines":[{"line_number":49,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":50,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":51,"context_line":"oslo.service\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":52,"context_line":"osprofiler\u003e\u003d1.0.1 # Apache-2.0"},{"line_number":53,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":44,"id":"3ac371cc_6d4e22c2","line":52,"in_reply_to":"3ac371cc_2246024f","updated":"2016-08-18 04:47:29.000000000","message":"Matt, \n\nIt\u0027s not first time that people is asking this. I fully understand your point. You want to reduce amount of hard dependencies for your project (like other projects in OpenStack). \n\nHowever, I would like you to take into account 3 things: \n1) OSprofiler is super light weight lib, I specially designed it with minimum requirements and code (https://github.com/openstack/osprofiler/blob/master/requirements.txt)\nso installation of this lib in nova won\u0027t add any of new dependencies\n\n2) OSprofiler is already designed as a stub stuff (if it is not activated no code will be called) \n\n3)  Personally, I would like to see usage of OSprofiler consistent across the projects of OpenStack. Which means if we decide to use stub, the only way to unify it will be to create new stub lib and add hard dependency of it to the code (which will be the same as basic behavior of osprofiler point 2)...","commit_id":"a7314a369011c49122c0c4721bdb3b0cc15638db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6de1c3888cb0e59cbe49220d2aa565543ae4e128","unresolved":false,"context_lines":[{"line_number":49,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":50,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":51,"context_line":"oslo.service\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":52,"context_line":"osprofiler\u003e\u003d1.0.1 # Apache-2.0"},{"line_number":53,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":44,"id":"3ac371cc_2246024f","line":52,"in_reply_to":"3ac371cc_38faca75","updated":"2016-08-17 22:01:25.000000000","message":"That\u0027s true I guess, the import of osprofiler would have to be conditional...which breaks the decorators. I wonder if we could have some stub profiler module in nova that does a conditional import of osprofiler and we decorate from the stub, and pass through to osprofiler if it\u0027s actually imported.\n\nI\u0027m trying to (1) avoid more rebase / merge conflicts on this and (2) make it optional for those that don\u0027t want to run it in production.","commit_id":"a7314a369011c49122c0c4721bdb3b0cc15638db"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ba1c1da57e74d139c732b45b6e4efa90fc423830","unresolved":false,"context_lines":[{"line_number":49,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":50,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":51,"context_line":"oslo.service\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":52,"context_line":"osprofiler\u003e\u003d1.0.1 # Apache-2.0"},{"line_number":53,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":44,"id":"1ac06dbe_58945636","line":52,"in_reply_to":"3ac371cc_6d4e22c2","updated":"2016-08-20 14:29:58.000000000","message":"I just meant a stub in nova, so like create passthrough decorators in a new nova/profiler module that delegate to osprofiler if it\u0027s imported, else they are noops.\n\nThe other point of that is to avoid rebase / merge conflicts while working on this, because I know people are pulling it down and running rally with it until it merges.","commit_id":"a7314a369011c49122c0c4721bdb3b0cc15638db"},{"author":{"_account_id":6172,"name":"Boris Pavlovic","email":"boris@pavlovic.me","username":"boris-42"},"change_message_id":"b4557368a81e7a34d0426c4fbf62582802b6ad2b","unresolved":false,"context_lines":[{"line_number":49,"context_line":"oslo.privsep\u003e\u003d1.9.0 # Apache-2.0"},{"line_number":50,"context_line":"oslo.i18n\u003e\u003d2.1.0 # Apache-2.0"},{"line_number":51,"context_line":"oslo.service\u003e\u003d1.10.0 # Apache-2.0"},{"line_number":52,"context_line":"osprofiler\u003e\u003d1.0.1 # Apache-2.0"},{"line_number":53,"context_line":"rfc3986\u003e\u003d0.2.0 # Apache-2.0"},{"line_number":54,"context_line":"oslo.middleware\u003e\u003d3.0.0 # Apache-2.0"},{"line_number":55,"context_line":"psutil\u003c2.0.0,\u003e\u003d1.1.1 # BSD"}],"source_content_type":"text/plain","patch_set":44,"id":"3ac371cc_38faca75","line":52,"in_reply_to":"3ac371cc_75e3aba4","updated":"2016-08-17 15:30:04.000000000","message":"It is actually not a good idea, because you won\u0027t be able to use osprofiler library in your code with all it\u0027s API sugar. \n\nfor example you can not use: \n\n\n   @profiler.trace() decorator\n   def some_method() \n\nor \n\n   with profice.Trace(): \n        ....\n\nand other stuff.. which makes osprofiler significantly less useful","commit_id":"a7314a369011c49122c0c4721bdb3b0cc15638db"}],"setup.cfg":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3341a5fc424d09bba4bc681ab74e7f2a7d082115","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"[extras]"},{"line_number":219,"context_line":"osprofiler \u003d"},{"line_number":220,"context_line":"    OSProfiler\u003e\u003d1.4.0"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"[pbr]"},{"line_number":223,"context_line":"# Treat sphinx warnings as errors during the docs build; this helps us keep"}],"source_content_type":"text/x-ttcn-cfg","patch_set":46,"id":"fa7ab95a_b6e26e9e","line":220,"range":{"start_line":220,"start_character":4,"end_line":220,"end_character":14},"updated":"2016-09-02 14:38:55.000000000","message":"nit: let\u0027s match the case in g-r:\n\nhttp://git.openstack.org/cgit/openstack/requirements/tree/global-requirements.txt#n120","commit_id":"19990e6b40230fdca7466f2e569d3a9f0ff91c1f"}]}
