)]}'
{"searchlight/elasticsearch/plugins/base.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"dbbb213ee8eac43506abc0bdcbf96c989c578930","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        if self.NotificationHandlerCls:"},{"line_number":364,"context_line":"            return self.NotificationHandlerCls(self.index_helper,"},{"line_number":365,"context_line":"                                               self.options,"},{"line_number":366,"context_line":"                                               self.get_routing_field())"},{"line_number":367,"context_line":"        return None"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def filter_result(self, hit, request_context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_18362be7","line":366,"range":{"start_line":366,"start_character":52,"end_line":366,"end_character":69},"updated":"2016-03-08 15:52:51.000000000","message":"Does the notification handler need this? Or is it something only the index helper needs? It seems like it\u0027s pretty specific to the elasticsearch operations.","commit_id":"3b004fdca00827227f2bd18902fa70ebcf2dcd5b"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"77a17abf859589b9a323361c258d79293c269a15","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        if self.NotificationHandlerCls:"},{"line_number":364,"context_line":"            return self.NotificationHandlerCls(self.index_helper,"},{"line_number":365,"context_line":"                                               self.options,"},{"line_number":366,"context_line":"                                               self.get_routing_field())"},{"line_number":367,"context_line":"        return None"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def filter_result(self, hit, request_context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_dce2c92e","line":366,"range":{"start_line":366,"start_character":52,"end_line":366,"end_character":69},"in_reply_to":"5aef4532_07c5105a","updated":"2016-03-09 10:46:42.000000000","message":"Could NotificationHandler classes to get the routing field from index_helper? I think it\u0027s better to make notification handlers and es indexing decoupled, if we are going to make the architecture into a pipeline.","commit_id":"3b004fdca00827227f2bd18902fa70ebcf2dcd5b"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"c2a6145e0f8061ce66925303f77ef8cc97396605","unresolved":false,"context_lines":[{"line_number":363,"context_line":"        if self.NotificationHandlerCls:"},{"line_number":364,"context_line":"            return self.NotificationHandlerCls(self.index_helper,"},{"line_number":365,"context_line":"                                               self.options,"},{"line_number":366,"context_line":"                                               self.get_routing_field())"},{"line_number":367,"context_line":"        return None"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"    def filter_result(self, hit, request_context):"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_07c5105a","line":366,"range":{"start_line":366,"start_character":52,"end_line":366,"end_character":69},"in_reply_to":"5aef4532_18362be7","updated":"2016-03-09 01:06:15.000000000","message":"This it to help NotficiationHandler classes to know what field name to be used for routing while doing CRUD opertaions on ES. Plugin developer could hardcode the field from the notification payload but this will make it easy when notification payload field name is similar to index data which is the proper way for notifications to match index field names.","commit_id":"3b004fdca00827227f2bd18902fa70ebcf2dcd5b"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"d43cb12d8962ecda7994ea075acb8a9d9a2fb258","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        \"\"\""},{"line_number":293,"context_line":"        return None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def get_routing_field(self):"},{"line_number":296,"context_line":"        \"\"\"Whatever field should be treated as the routing value."},{"line_number":297,"context_line":"        This is required for plugins with _routing definitions in their"},{"line_number":298,"context_line":"        mappings. Documents to be indexed should contain this field."}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_b338b53e","line":295,"range":{"start_line":295,"start_character":8,"end_line":295,"end_character":25},"updated":"2016-03-09 22:12:20.000000000","message":"Minor nit if you\u0027re making other changes anyway; let\u0027s try to move towards properties (and remove the get_)","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"533fad22c590db4b462309710a59a5d8df7a2d4b","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        \"\"\""},{"line_number":293,"context_line":"        return None"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def get_routing_field(self):"},{"line_number":296,"context_line":"        \"\"\"Whatever field should be treated as the routing value."},{"line_number":297,"context_line":"        This is required for plugins with _routing definitions in their"},{"line_number":298,"context_line":"        mappings. Documents to be indexed should contain this field."}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_e3867264","line":295,"range":{"start_line":295,"start_character":8,"end_line":295,"end_character":25},"in_reply_to":"5aef4532_b338b53e","updated":"2016-03-11 17:45:01.000000000","message":"Done","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"d43cb12d8962ecda7994ea075acb8a9d9a2fb258","unresolved":false,"context_lines":[{"line_number":460,"context_line":"    def __init__(self, index_helper, options, routing_field):"},{"line_number":461,"context_line":"        self.index_helper \u003d index_helper"},{"line_number":462,"context_line":"        self.plugin_options \u003d options"},{"line_number":463,"context_line":"        self.routing_field \u003d routing_field"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def get_notification_supported_events(self):"},{"line_number":466,"context_line":"        \"\"\"Get the list of event types this plugin responds to.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_08bdddb6","line":463,"range":{"start_line":463,"start_character":29,"end_line":463,"end_character":42},"updated":"2016-03-09 22:12:20.000000000","message":"Is this required anywhere outside of indexinghelper?","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"533fad22c590db4b462309710a59a5d8df7a2d4b","unresolved":false,"context_lines":[{"line_number":460,"context_line":"    def __init__(self, index_helper, options, routing_field):"},{"line_number":461,"context_line":"        self.index_helper \u003d index_helper"},{"line_number":462,"context_line":"        self.plugin_options \u003d options"},{"line_number":463,"context_line":"        self.routing_field \u003d routing_field"},{"line_number":464,"context_line":""},{"line_number":465,"context_line":"    def get_notification_supported_events(self):"},{"line_number":466,"context_line":"        \"\"\"Get the list of event types this plugin responds to.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_83968e92","line":463,"range":{"start_line":463,"start_character":29,"end_line":463,"end_character":42},"in_reply_to":"5aef4532_08bdddb6","updated":"2016-03-11 17:45:01.000000000","message":"Decoupled. see previous comment on this","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"}],"searchlight/elasticsearch/plugins/utils.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"dbbb213ee8eac43506abc0bdcbf96c989c578930","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if self.plugin.requires_role_separation:"},{"line_number":249,"context_line":"            doc_id +\u003d (ADMIN_ID_SUFFIX if for_admin else USER_ID_SUFFIX)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        if routing:"},{"line_number":252,"context_line":"            return self.engine.get("},{"line_number":253,"context_line":"                index\u003dself.index_name,"},{"line_number":254,"context_line":"                doc_type\u003dself.document_type,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_98bd1bda","line":251,"range":{"start_line":251,"start_character":11,"end_line":251,"end_character":18},"updated":"2016-03-08 15:52:51.000000000","message":"If routing is None by default in py-es, you can always pass it. Otherwise best to use something like\n\nkwargs \u003d {}\nif routing:\n  kwargs[\u0027routing\u0027] \u003d routing\n\nself.engine.get.(....., **kwargs)","commit_id":"3b004fdca00827227f2bd18902fa70ebcf2dcd5b"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"c2a6145e0f8061ce66925303f77ef8cc97396605","unresolved":false,"context_lines":[{"line_number":248,"context_line":"        if self.plugin.requires_role_separation:"},{"line_number":249,"context_line":"            doc_id +\u003d (ADMIN_ID_SUFFIX if for_admin else USER_ID_SUFFIX)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        if routing:"},{"line_number":252,"context_line":"            return self.engine.get("},{"line_number":253,"context_line":"                index\u003dself.index_name,"},{"line_number":254,"context_line":"                doc_type\u003dself.document_type,"}],"source_content_type":"text/x-python","patch_set":3,"id":"5aef4532_a7dedc3c","line":251,"range":{"start_line":251,"start_character":11,"end_line":251,"end_character":18},"in_reply_to":"5aef4532_98bd1bda","updated":"2016-03-09 01:06:15.000000000","message":"Done","commit_id":"3b004fdca00827227f2bd18902fa70ebcf2dcd5b"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"1efda881d45ac8a86c16cff7648084a3e8b18870","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        else:"},{"line_number":175,"context_line":"            self.save_documents([document])"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def save_documents(self, documents, versions\u003dNone):"},{"line_number":178,"context_line":"        \"\"\"Send list of serialized documents into search engine.\"\"\""},{"line_number":179,"context_line":"        try:"},{"line_number":180,"context_line":"            result \u003d helpers.bulk("}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_deda5d16","line":177,"updated":"2016-03-10 17:25:14.000000000","message":"Do we want to add the routing field when we first create the document?","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"533fad22c590db4b462309710a59a5d8df7a2d4b","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        else:"},{"line_number":175,"context_line":"            self.save_documents([document])"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def save_documents(self, documents, versions\u003dNone):"},{"line_number":178,"context_line":"        \"\"\"Send list of serialized documents into search engine.\"\"\""},{"line_number":179,"context_line":"        try:"},{"line_number":180,"context_line":"            result \u003d helpers.bulk("}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_c3c89677","line":177,"in_reply_to":"5aef4532_deda5d16","updated":"2016-03-11 17:45:01.000000000","message":"Yes that is already getting added. See _apply_role_filtering. May be _apply_role_filtering should be renamed since its adding _parent, _verision, _routing and maybe more in future.\n\nI will rename it to _prepare_actions.","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"5b8c87fa420a35723307c303fb276c9d1a51e39f","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            query\u003dquery)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        to_delete \u003d [{\u0027_id\u0027: doc[\u0027_id\u0027], \u0027_parent\u0027: doc[\u0027fields\u0027][\u0027_parent\u0027],"},{"line_number":274,"context_line":"                      \u0027_routing\u0027: doc[\u0027fields\u0027][\u0027_routing\u0027]}"},{"line_number":275,"context_line":"                     for doc in documents]"},{"line_number":276,"context_line":"        self.delete_documents(to_delete, override_role_separation\u003dTrue)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_96d022f8","line":274,"range":{"start_line":274,"start_character":0,"end_line":274,"end_character":22},"updated":"2016-03-09 10:45:23.000000000","message":"If routing is optional, _routing field may not exist in scan results, which will raise an exception here.","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"533fad22c590db4b462309710a59a5d8df7a2d4b","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            query\u003dquery)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        to_delete \u003d [{\u0027_id\u0027: doc[\u0027_id\u0027], \u0027_parent\u0027: doc[\u0027fields\u0027][\u0027_parent\u0027],"},{"line_number":274,"context_line":"                      \u0027_routing\u0027: doc[\u0027fields\u0027][\u0027_routing\u0027]}"},{"line_number":275,"context_line":"                     for doc in documents]"},{"line_number":276,"context_line":"        self.delete_documents(to_delete, override_role_separation\u003dTrue)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_1d877d10","line":274,"range":{"start_line":274,"start_character":0,"end_line":274,"end_character":22},"in_reply_to":"5aef4532_96d022f8","updated":"2016-03-11 17:45:01.000000000","message":"Thanks for pointing it out!","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"d43cb12d8962ecda7994ea075acb8a9d9a2fb258","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        if self.plugin.requires_role_separation:"},{"line_number":280,"context_line":"            doc_id +\u003d (ADMIN_ID_SUFFIX if for_admin else USER_ID_SUFFIX)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if routing:"},{"line_number":283,"context_line":"            return self.engine.get("},{"line_number":284,"context_line":"                index\u003dself.index_name,"},{"line_number":285,"context_line":"                doc_type\u003dself.document_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_887bad27","line":282,"range":{"start_line":282,"start_character":18,"end_line":282,"end_character":19},"updated":"2016-03-09 22:12:20.000000000","message":"If routing\u003dNone is the default this conditional isn\u0027t necessary","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"533fad22c590db4b462309710a59a5d8df7a2d4b","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        if self.plugin.requires_role_separation:"},{"line_number":280,"context_line":"            doc_id +\u003d (ADMIN_ID_SUFFIX if for_admin else USER_ID_SUFFIX)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if routing:"},{"line_number":283,"context_line":"            return self.engine.get("},{"line_number":284,"context_line":"                index\u003dself.index_name,"},{"line_number":285,"context_line":"                doc_type\u003dself.document_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_c86275d8","line":282,"range":{"start_line":282,"start_character":18,"end_line":282,"end_character":19},"in_reply_to":"5aef4532_887bad27","updated":"2016-03-11 17:45:01.000000000","message":"Doesn\u0027t seem to work on GET requests. Maybe bulk is different but its always safe to check anyway.","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"1efda881d45ac8a86c16cff7648084a3e8b18870","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        if self.plugin.requires_role_separation:"},{"line_number":280,"context_line":"            doc_id +\u003d (ADMIN_ID_SUFFIX if for_admin else USER_ID_SUFFIX)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if routing:"},{"line_number":283,"context_line":"            return self.engine.get("},{"line_number":284,"context_line":"                index\u003dself.index_name,"},{"line_number":285,"context_line":"                doc_type\u003dself.document_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"5aef4532_bea4b14a","line":282,"range":{"start_line":282,"start_character":18,"end_line":282,"end_character":19},"in_reply_to":"5aef4532_887bad27","updated":"2016-03-10 17:25:14.000000000","message":"Is this true? If we pass \"routing\u003dNone\" to get() will it be interpreted correctly? Will get() ignore it when it calls transport.perform_request() or will it pass in some empty value that ES may interpret as a custom routing?","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"533fad22c590db4b462309710a59a5d8df7a2d4b","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        if self.plugin.requires_role_separation:"},{"line_number":280,"context_line":"            doc_id +\u003d (ADMIN_ID_SUFFIX if for_admin else USER_ID_SUFFIX)"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"        if routing:"},{"line_number":283,"context_line":"            return self.engine.get("},{"line_number":284,"context_line":"                index\u003dself.index_name,"},{"line_number":285,"context_line":"                doc_type\u003dself.document_type,"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_e82ad17d","line":282,"range":{"start_line":282,"start_character":18,"end_line":282,"end_character":19},"in_reply_to":"5aef4532_bea4b14a","updated":"2016-03-11 17:45:01.000000000","message":"Elasticsearch doesn\u0027t seem to work on GET if routing is passed as None when originally the doc doesn\u0027t have routing. So its always better to check if its None.","commit_id":"a743066cb8de9cc596cb0bf9b94287a5151fe09d"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"0dae18806d52ecd88c13c0801642121dddc4a8f9","unresolved":false,"context_lines":[{"line_number":302,"context_line":"             \u0027_routing\u0027: doc[\u0027fields\u0027][\u0027_routing\u0027]}"},{"line_number":303,"context_line":"            if \u0027_routing\u0027 in doc[\u0027fields\u0027]"},{"line_number":304,"context_line":"            else {\u0027_id\u0027: doc[\u0027_id\u0027], \u0027_parent\u0027: doc[\u0027fields\u0027][\u0027_parent\u0027]}"},{"line_number":305,"context_line":"            for doc in documents]"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # Use the parent version tag; we\u0027re instructing elasticsearch to mark"},{"line_number":308,"context_line":"        # all the deleted child documents as \u0027don\u0027t apply updates received"}],"source_content_type":"text/x-python","patch_set":5,"id":"3afc51ec_75ddf541","line":305,"range":{"start_line":305,"start_character":23,"end_line":305,"end_character":32},"updated":"2016-03-11 18:33:42.000000000","message":"This reads like perl golf :)  I think functionally it\u0027s ok; for future reference it might be clearer to use an inner function\n\ndef get_action(doc):\n   action \u003d {\u0027_id\u0027: ..... , \u0027_parent\u0027: ...}\n   if \u0027_routing\u0027 in doc[\u0027fields\u0027]:\n       action[\u0027_routing\u0027] \u003d ...\n   return action\n\ndelete_actions \u003d [get_action(doc) for doc in documents]\n\nI think I\u0027m ok with leaving this for now.","commit_id":"dbe481ab98c9907e5ed3478aa7968aaa28325004"}],"searchlight/tests/unit/test_indexing_helper.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"120f25aa32566c2d7e5640f22b2e9bac0e5ac29b","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        bulk_name \u003d \u0027searchlight.elasticsearch.plugins.utils.helpers.bulk\u0027"},{"line_number":107,"context_line":"        with mock.patch(bulk_name) as mock_bulk:"},{"line_number":108,"context_line":"            indexing_helper.delete_document({\u0027_id\u0027: \u0027role-fake1\u0027,"},{"line_number":109,"context_line":"                                             \u0027_routing\u0027: \u0027role-fake1\u0027})"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            expected_delete_actions \u003d ["},{"line_number":112,"context_line":"                {\u0027_op_type\u0027: \u0027delete\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_f8b908ee","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":45},"updated":"2016-03-15 14:48:05.000000000","message":"I think i\u0027d prefer a separate test (or at least a separate section in this test); after this change there\u0027s nothing testing deletion without routing","commit_id":"80e7458ec571cdf4210cb967226bf13c72f2a535"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"d376c6b166d1b1763c53b06dafd46e6c9f86f5c6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        bulk_name \u003d \u0027searchlight.elasticsearch.plugins.utils.helpers.bulk\u0027"},{"line_number":107,"context_line":"        with mock.patch(bulk_name) as mock_bulk:"},{"line_number":108,"context_line":"            indexing_helper.delete_document({\u0027_id\u0027: \u0027role-fake1\u0027,"},{"line_number":109,"context_line":"                                             \u0027_routing\u0027: \u0027role-fake1\u0027})"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"            expected_delete_actions \u003d ["},{"line_number":112,"context_line":"                {\u0027_op_type\u0027: \u0027delete\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_c2cec859","line":109,"range":{"start_line":109,"start_character":0,"end_line":109,"end_character":45},"in_reply_to":"1af94dfe_f8b908ee","updated":"2016-03-15 20:01:55.000000000","message":"Done","commit_id":"80e7458ec571cdf4210cb967226bf13c72f2a535"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"120f25aa32566c2d7e5640f22b2e9bac0e5ac29b","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        expected_actions \u003d ["},{"line_number":248,"context_line":"            {\u0027_op_type\u0027: \u0027index\u0027, \u0027_id\u0027: \u0027child1_ADMIN\u0027,"},{"line_number":249,"context_line":"             \u0027_source\u0027: expected_admin_doc, \u0027_parent\u0027: \u0027simple1\u0027,"},{"line_number":250,"context_line":"             \"_routing\": \u0027child1\u0027},"},{"line_number":251,"context_line":"            {\u0027_op_type\u0027: \u0027index\u0027, \u0027_id\u0027: \u0027child1_USER\u0027,"},{"line_number":252,"context_line":"             \u0027_source\u0027: expected_user_doc, \u0027_parent\u0027: \u0027simple1\u0027,"},{"line_number":253,"context_line":"             \"_routing\": \u0027child1\u0027}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_38dd3043","line":250,"range":{"start_line":250,"start_character":26,"end_line":250,"end_character":32},"updated":"2016-03-15 14:48:05.000000000","message":"This example seems a bit contrived; in reality the routing would have to be the parent id","commit_id":"80e7458ec571cdf4210cb967226bf13c72f2a535"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"d376c6b166d1b1763c53b06dafd46e6c9f86f5c6","unresolved":false,"context_lines":[{"line_number":247,"context_line":"        expected_actions \u003d ["},{"line_number":248,"context_line":"            {\u0027_op_type\u0027: \u0027index\u0027, \u0027_id\u0027: \u0027child1_ADMIN\u0027,"},{"line_number":249,"context_line":"             \u0027_source\u0027: expected_admin_doc, \u0027_parent\u0027: \u0027simple1\u0027,"},{"line_number":250,"context_line":"             \"_routing\": \u0027child1\u0027},"},{"line_number":251,"context_line":"            {\u0027_op_type\u0027: \u0027index\u0027, \u0027_id\u0027: \u0027child1_USER\u0027,"},{"line_number":252,"context_line":"             \u0027_source\u0027: expected_user_doc, \u0027_parent\u0027: \u0027simple1\u0027,"},{"line_number":253,"context_line":"             \"_routing\": \u0027child1\u0027}"}],"source_content_type":"text/x-python","patch_set":8,"id":"1af94dfe_e555d3c6","line":250,"range":{"start_line":250,"start_character":26,"end_line":250,"end_character":32},"in_reply_to":"1af94dfe_38dd3043","updated":"2016-03-15 20:01:55.000000000","message":"routing is any field in the document specified by the plugin user. Normally that field would be a tenantid. In this fakeplugin it used \u0027id\u0027 field which happens to be \u0027child1\u0027. I can add tenant_id as another field instead of changing the id.","commit_id":"80e7458ec571cdf4210cb967226bf13c72f2a535"}]}
