)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b41dafbc4522ac87c4f5ac369d9494d6ad01f199","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add MongoDB driver"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Ibc3c02ee1da5c977b7ddaa909ea7e8cdfb439773"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bab6814e_ff07167f","line":9,"updated":"2016-05-24 09:35:26.000000000","message":"Do we also need Depends-on?","commit_id":"ee2fa0519cc31d40e3cd0367714dfa87b1dc33fb"}],"osprofiler/drivers/mongodb.py":[{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b0eb98b756639a2e50c7f7eb28f04ea0b1c38538","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class MongoDB(base.Driver):"},{"line_number":21,"context_line":"    def __init__(self, connection_str, db_name\u003d\"osprofiler\", project\u003dNone,"},{"line_number":22,"context_line":"                 service\u003dNone, host\u003dNone, **kwargs):"},{"line_number":23,"context_line":"        \"\"\"MongoDB driver for OSProfiler.\"\"\""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_ade93d81","line":21,"range":{"start_line":21,"start_character":39,"end_line":21,"end_character":59},"updated":"2016-05-17 05:16:28.000000000","message":"Is it possible for the user to configure this?","commit_id":"6cb51989b84c63520944e4b2a23eb33206d43c42"},{"author":{"_account_id":3012,"name":"Dina Belova","email":"dbelova@mirantis.com","username":"dbelova"},"change_message_id":"09b506f74624575759709ec4f28abc70d10fe6a6","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"class MongoDB(base.Driver):"},{"line_number":21,"context_line":"    def __init__(self, connection_str, db_name\u003d\"osprofiler\", project\u003dNone,"},{"line_number":22,"context_line":"                 service\u003dNone, host\u003dNone, **kwargs):"},{"line_number":23,"context_line":"        \"\"\"MongoDB driver for OSProfiler.\"\"\""},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bab6814e_4fa63754","line":21,"range":{"start_line":21,"start_character":39,"end_line":21,"end_character":59},"in_reply_to":"dab17558_ade93d81","updated":"2016-05-19 10:59:00.000000000","message":"it will be possible via passing needed params to the https://review.openstack.org/#/c/247005/35/osprofiler/drivers/base.py - line 24","commit_id":"6cb51989b84c63520944e4b2a23eb33206d43c42"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b0eb98b756639a2e50c7f7eb28f04ea0b1c38538","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        :param info:  Contains information about trace element."},{"line_number":46,"context_line":"                      In payload dict there are always 3 ids:"},{"line_number":47,"context_line":"                      \"base_id\" - uuid that is common for all notifications"},{"line_number":48,"context_line":"                                  related to one trace. Used to simplify"},{"line_number":49,"context_line":"                                  retrieving of all trace elements from"},{"line_number":50,"context_line":"                                  Ceilometer."},{"line_number":51,"context_line":"                      \"parent_id\" - uuid of parent element in trace"},{"line_number":52,"context_line":"                      \"trace_id\" - uuid of current element in trace"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dab17558_4d4d31c3","line":50,"range":{"start_line":48,"start_character":56,"end_line":50,"end_character":45},"updated":"2016-05-17 05:16:28.000000000","message":"Please fix this or remove it completely.","commit_id":"6cb51989b84c63520944e4b2a23eb33206d43c42"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b41dafbc4522ac87c4f5ac369d9494d6ad01f199","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                      \"base_id\" - uuid that is common for all notifications"},{"line_number":48,"context_line":"                                  related to one trace. Used to simplify"},{"line_number":49,"context_line":"                                  retrieving of all trace elements from"},{"line_number":50,"context_line":"                                  Ceilometer."},{"line_number":51,"context_line":"                      \"parent_id\" - uuid of parent element in trace"},{"line_number":52,"context_line":"                      \"trace_id\" - uuid of current element in trace"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_62a42d08","line":50,"range":{"start_line":50,"start_character":34,"end_line":50,"end_character":44},"updated":"2016-05-24 09:35:26.000000000","message":"Looks like you missed my comment in one of the previous patch sets. Please change this to MongoDB.","commit_id":"ee2fa0519cc31d40e3cd0367714dfa87b1dc33fb"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"b41dafbc4522ac87c4f5ac369d9494d6ad01f199","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def get_report(self, base_id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"bab6814e_02860165","line":60,"range":{"start_line":59,"start_character":7,"end_line":60,"end_character":38},"updated":"2016-05-24 09:35:26.000000000","message":"This is not needed because we set this in profiler.","commit_id":"ee2fa0519cc31d40e3cd0367714dfa87b1dc33fb"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"89738f185b48f9dbb51d9bc8d5fb83504b512767","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                      \"base_id\" - uuid that is common for all notifications"},{"line_number":48,"context_line":"                                  related to one trace. Used to simplify"},{"line_number":49,"context_line":"                                  retrieving of all trace elements from"},{"line_number":50,"context_line":"                                  Ceilometer."},{"line_number":51,"context_line":"                      \"parent_id\" - uuid of parent element in trace"},{"line_number":52,"context_line":"                      \"trace_id\" - uuid of current element in trace"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_7b13e4b8","line":50,"range":{"start_line":50,"start_character":33,"end_line":50,"end_character":44},"updated":"2016-06-07 11:09:41.000000000","message":"Looks like you missed my comment in last two patch sets. Please change this to MongoDB.","commit_id":"3c5e8bc338aa4c9b044813ef49cd921d67b9c893"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"db5a6d49f73350e64c540fbce2098e4fab81ee5a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                      \"base_id\" - uuid that is common for all notifications"},{"line_number":48,"context_line":"                                  related to one trace. Used to simplify"},{"line_number":49,"context_line":"                                  retrieving of all trace elements from"},{"line_number":50,"context_line":"                                  Ceilometer."},{"line_number":51,"context_line":"                      \"parent_id\" - uuid of parent element in trace"},{"line_number":52,"context_line":"                      \"trace_id\" - uuid of current element in trace"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_8ef6d7d4","line":50,"range":{"start_line":50,"start_character":33,"end_line":50,"end_character":44},"in_reply_to":"7aa08908_7b13e4b8","updated":"2016-06-14 16:55:24.000000000","message":"Done","commit_id":"3c5e8bc338aa4c9b044813ef49cd921d67b9c893"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"89738f185b48f9dbb51d9bc8d5fb83504b512767","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def list_traces(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_9b87b0d6","line":60,"range":{"start_line":59,"start_character":8,"end_line":60,"end_character":38},"updated":"2016-06-07 11:09:41.000000000","message":"It looks like you missed my comment in the last patch set.\n\n\"This is not needed because we set this in profiler.\"","commit_id":"3c5e8bc338aa4c9b044813ef49cd921d67b9c893"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"db5a6d49f73350e64c540fbce2098e4fab81ee5a","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def list_traces(self, **kwargs):"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_ee183b20","line":60,"range":{"start_line":59,"start_character":8,"end_line":60,"end_character":38},"in_reply_to":"7aa08908_9b87b0d6","updated":"2016-06-14 16:55:24.000000000","message":"See my comments in change #247005","commit_id":"3c5e8bc338aa4c9b044813ef49cd921d67b9c893"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"89738f185b48f9dbb51d9bc8d5fb83504b512767","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def list_traces(self, **kwargs):"},{"line_number":64,"context_line":"        \"\"\"Returns array of all base_id fields that match the given criteria"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        :param kwargs: dict that specifies the query criteria"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_7bc80423","line":63,"updated":"2016-06-07 11:09:41.000000000","message":"Is this specific to the MongoDB driver or is it a driver API?","commit_id":"3c5e8bc338aa4c9b044813ef49cd921d67b9c893"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"db5a6d49f73350e64c540fbce2098e4fab81ee5a","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def list_traces(self, **kwargs):"},{"line_number":64,"context_line":"        \"\"\"Returns array of all base_id fields that match the given criteria"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        :param kwargs: dict that specifies the query criteria"}],"source_content_type":"text/x-python","patch_set":10,"id":"7aa08908_ced45fea","line":63,"in_reply_to":"7aa08908_7bc80423","updated":"2016-06-14 16:55:24.000000000","message":"Right now it is an experimental method for Horizon UI integration. I can\u0027t say yet if it will become an API method. Just testing and researching.","commit_id":"3c5e8bc338aa4c9b044813ef49cd921d67b9c893"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"4a22217da7a599a53eb236c64351edb6b012d069","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        ids \u003d self.db.profiler.find(query).distinct(\"base_id\")"},{"line_number":70,"context_line":"        out_format \u003d {\"base_id\": 1, \"timestamp\": 1, \"_id\": 0}"},{"line_number":71,"context_line":"        out_format.update({i: 1 for i in fields})"},{"line_number":72,"context_line":"        return [self.db.profiler.find("},{"line_number":73,"context_line":"                {\"base_id\": i}, out_format).sort(\"timestamp\")[0] for i in ids]"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_1f38293d","line":71,"updated":"2016-06-15 12:54:13.000000000","message":"What is the suggested way to pass additional columns for later retrieval here? Do I get right that they needed to be added to `info` dictionary, like on lines 59-60 above?","commit_id":"e53ddaedb3c783540b8d785f79746df9aaf3016c"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"3155a83ae49384f3be73d4b4d09bf27ea7711493","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        ids \u003d self.db.profiler.find(query).distinct(\"base_id\")"},{"line_number":70,"context_line":"        out_format \u003d {\"base_id\": 1, \"timestamp\": 1, \"_id\": 0}"},{"line_number":71,"context_line":"        out_format.update({i: 1 for i in fields})"},{"line_number":72,"context_line":"        return [self.db.profiler.find("},{"line_number":73,"context_line":"                {\"base_id\": i}, out_format).sort(\"timestamp\")[0] for i in ids]"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_30a39202","line":71,"in_reply_to":"7aa08908_1f38293d","updated":"2016-06-15 13:31:47.000000000","message":"Yes, exactly.","commit_id":"e53ddaedb3c783540b8d785f79746df9aaf3016c"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"1abb7c6b8ecd15a7265331b55374e60b2c0e95ad","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        ids \u003d self.db.profiler.find(query).distinct(\"base_id\")"},{"line_number":70,"context_line":"        out_format \u003d {\"base_id\": 1, \"timestamp\": 1, \"_id\": 0}"},{"line_number":71,"context_line":"        out_format.update({i: 1 for i in fields})"},{"line_number":72,"context_line":"        return [self.db.profiler.find("},{"line_number":73,"context_line":"                {\"base_id\": i}, out_format).sort(\"timestamp\")[0] for i in ids]"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_bb77573a","line":71,"in_reply_to":"7aa08908_30a39202","updated":"2016-06-15 17:43:51.000000000","message":"Awesome! What I really would like to see here as well is the pagination facilities. Do you think that\u0027s possible at all?","commit_id":"e53ddaedb3c783540b8d785f79746df9aaf3016c"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"1968ffffee8451903f31e724cb0353306266197f","unresolved":false,"context_lines":[{"line_number":68,"context_line":"        \"\"\""},{"line_number":69,"context_line":"        ids \u003d self.db.profiler.find(query).distinct(\"base_id\")"},{"line_number":70,"context_line":"        out_format \u003d {\"base_id\": 1, \"timestamp\": 1, \"_id\": 0}"},{"line_number":71,"context_line":"        out_format.update({i: 1 for i in fields})"},{"line_number":72,"context_line":"        return [self.db.profiler.find("},{"line_number":73,"context_line":"                {\"base_id\": i}, out_format).sort(\"timestamp\")[0] for i in ids]"},{"line_number":74,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"7aa08908_9be53bde","line":71,"in_reply_to":"7aa08908_bb77573a","updated":"2016-06-15 17:45:33.000000000","message":"Oh, and the second really nice feature would be an ability to delete traces/reports from storage (i.e. delete_trace call).","commit_id":"e53ddaedb3c783540b8d785f79746df9aaf3016c"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"394f1676628cd0e87359e9a36c271211d7f275f1","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                      tree of trace elements, which simplify analyze of trace."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_205f8b76","line":58,"updated":"2016-07-15 00:29:53.000000000","message":"Avoid modifying someone elses dictionary ;)\n\nIts a bad behavior to do, and I doubt it is an expected result of this method call.","commit_id":"3798187690af261cd9f27487c5628e0dadf21b97"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"5332a262093d60341572df79f7342c60c52a97cc","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                      tree of trace elements, which simplify analyze of trace."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"}],"source_content_type":"text/x-python","patch_set":18,"id":"dada55a8_148f6724","line":58,"in_reply_to":"1aa78d24_09509cd3","updated":"2016-07-18 12:30:06.000000000","message":"Yeah, perhaps it is a more pythonic way to do it.","commit_id":"3798187690af261cd9f27487c5628e0dadf21b97"},{"author":{"_account_id":18654,"name":"Alexey Yelistratov","email":"ayelistratov@mirantis.com","username":"rohanion"},"change_message_id":"e9326a84d11653de4096111fee5bd617c89312e4","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                      tree of trace elements, which simplify analyze of trace."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_db6c9f0a","line":58,"in_reply_to":"1aa78d24_205f8b76","updated":"2016-07-15 12:14:51.000000000","message":"Unfortunately, for now we have to modify Profiler\u0027s dictionary because currently the services do not pass their and their projects\u0027 names. We will deprecate it in the next major version when we introduce new API calls.\n\nhttps://github.com/openstack/osprofiler/blob/master/osprofiler/profiler.py#L64\nE.g.\nhttps://github.com/openstack/cinder/blob/master/cinder/rpc.py#L137-L149","commit_id":"3798187690af261cd9f27487c5628e0dadf21b97"},{"author":{"_account_id":8040,"name":"Timur Sufiev","email":"tsufiev@gmail.com","username":"tsufiev"},"change_message_id":"396d7391233d9fce930c79b8a14e722dbfc24665","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                      tree of trace elements, which simplify analyze of trace."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        \"\"\""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        info[\"project\"] \u003d self.project"},{"line_number":60,"context_line":"        info[\"service\"] \u003d self.service"},{"line_number":61,"context_line":"        self.db.profiler.insert_one(info)"}],"source_content_type":"text/x-python","patch_set":18,"id":"1aa78d24_09509cd3","line":58,"in_reply_to":"1aa78d24_db6c9f0a","updated":"2016-07-15 14:16:06.000000000","message":"I\u0027m wondering if making a shallow copy.copy() of a dictionary would make Joshua happy :).","commit_id":"3798187690af261cd9f27487c5628e0dadf21b97"}]}
