)]}'
{"doc/source/plugins.rst":[{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"9b4a0ac1dd087f3ca8207e0066faf5fd9d0ec745","unresolved":false,"context_lines":[{"line_number":97,"context_line":"    enabled \u003d False"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    [resource_plugin:os_cinder_volume]"},{"line_number":100,"context_line":"    admin_only_fields \u003d encrypted,multiattach"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Common Plugin Configuration Options"}],"source_content_type":"text/x-rst","patch_set":8,"id":"3afc51ec_f9f8854b","line":100,"updated":"2016-03-14 21:16:31.000000000","message":"add \nenabled \u003d True\n\nand\n[resource_plugin:os_cinder_snapshot]\nenabled \u003d True","commit_id":"b6ac840192c9161e2d0ef12483a988deff630865"}],"searchlight/elasticsearch/plugins/base.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":491,"context_line":"        except Exception as e:"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"            LOG.error(encodeutils.exception_to_unicode(e))"},{"line_number":494,"context_line":"            LOG.exception(_LE(\"Error in plugin\"))"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def get_notification_topics_exchanges(self):"},{"line_number":497,"context_line":"        \"\"\"\"Returns a list of (topic,exchange), (topic,exchange)..)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_aaefcf85","line":494,"range":{"start_line":494,"start_character":26,"end_line":494,"end_character":29},"updated":"2016-02-16 16:26:38.000000000","message":"_LE will need defining (currently this file only has _LW and _LI)","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":491,"context_line":"        except Exception as e:"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"            LOG.error(encodeutils.exception_to_unicode(e))"},{"line_number":494,"context_line":"            LOG.exception(_LE(\"Error in plugin\"))"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"    def get_notification_topics_exchanges(self):"},{"line_number":497,"context_line":"        \"\"\"\"Returns a list of (topic,exchange), (topic,exchange)..)"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b9970139","line":494,"range":{"start_line":494,"start_character":26,"end_line":494,"end_character":29},"in_reply_to":"dae33548_aaefcf85","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"}],"searchlight/elasticsearch/plugins/cinder/__init__.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_9bfe8c36","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_598fd529","line":1,"in_reply_to":"dae33548_9bfe8c36","updated":"2016-02-17 11:37:07.000000000","message":"Done - I\u0027ve had this patch sat a while without submitting :-(","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"_LW \u003d i18n._LW"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_3bd14058","line":28,"updated":"2016-02-17 00:42:50.000000000","message":"Are these fields always the same and consistent for each Cinder type (volume,  snapshot and backup)? Or should we have separate black list sets for each one?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":25,"context_line":"_LW \u003d i18n._LW"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_fbe87812","line":28,"updated":"2016-02-17 00:42:50.000000000","message":"Are these fields always the same and consistent for each Cinder type (volume,  snapshot and backup)? Or should we have separate black list sets for each one?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":25,"context_line":"_LW \u003d i18n._LW"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b9a9c192","line":28,"in_reply_to":"dae33548_fbe87812","updated":"2016-02-17 11:37:07.000000000","message":"There is a difference for the fields which need admin, but so far these seem to be the only ones that should be dumped entirely","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"},{"line_number":32,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_bb7d501e","line":29,"updated":"2016-02-17 00:42:50.000000000","message":"Do we need to normalize between V1 and V2 of the API? It looks the same fields may have different names between the two (e.g. V1 has \"display_name\" while V2 has name\").","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"},{"line_number":32,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_59da354d","line":29,"in_reply_to":"dae33548_56ecdb8e","updated":"2016-02-17 11:37:07.000000000","message":"I\u0027m always using the cinder V2 api - V1 is deprecated and may/will be removed soon. When I add the verbose events stuff (get cinder to include everything in the event, no need to hit the API) then I\u0027ll need to map the event fields to match the API fields that are used here","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"adeba04fb0bcff2fa1bc5221a4b64ba9f3c4d75a","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"},{"line_number":32,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_56ecdb8e","line":29,"in_reply_to":"dae33548_bb7d501e","updated":"2016-02-17 00:47:02.000000000","message":"versioning for all resources is something we need to tackle in holistic manner. I\u0027ve been thinking this would become a newton effort with Mitaka still being latest API. But it would be good to hear Duncan\u0027s opinion.  FYI on related blueprint (nova specific):\n\nhttps://blueprints.launchpad.net/searchlight/+spec/nova-server-versioning-extensions","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                  if k not in BLACKLISTED_FIELDS}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # Some enhancements"},{"line_number":43,"context_line":"    serialized[u\u0027owner\u0027] \u003d volume.user_id"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    utils.normalize_date_fields(serialized)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_6fddd90d","line":43,"range":{"start_line":43,"start_character":17,"end_line":43,"end_character":22},"updated":"2016-02-16 16:26:38.000000000","message":"Typically the \u0027owner\u0027 is considered to be a project/tenant. I would suggest not creating this mapping for user-id since it\u0027s ambiguous.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                  if k not in BLACKLISTED_FIELDS}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # Some enhancements"},{"line_number":43,"context_line":"    serialized[u\u0027owner\u0027] \u003d volume.user_id"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    utils.normalize_date_fields(serialized)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_f997c945","line":43,"range":{"start_line":43,"start_character":17,"end_line":43,"end_character":22},"in_reply_to":"dae33548_6fddd90d","updated":"2016-02-17 11:37:07.000000000","message":"Ok","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8a9c35aef8d589a8f2d8157d4cb1dd7474892755","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                  if k not in BLACKLISTED_FIELDS}"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    # Some enhancements"},{"line_number":43,"context_line":"    serialized[u\u0027owner\u0027] \u003d volume.user_id"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    utils.normalize_date_fields(serialized)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_62fad076","line":43,"range":{"start_line":43,"start_character":17,"end_line":43,"end_character":22},"in_reply_to":"dae33548_f997c945","updated":"2016-02-17 15:59:15.000000000","message":"Something else i noticed - we typically try to set \u0027created_at\u0027 and \u0027updated_at\u0027 on everything to ease sorting (nova uses those field names). If cinder uses different ones, this is a good place to perform that mapping (and if not, there\u0027s no need to store both \u0027created\u0027 and \u0027created_at\u0027, same for updated)","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"},{"line_number":32,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"},{"line_number":33,"context_line":"    if isinstance(volume, six.text_type):"},{"line_number":34,"context_line":"        volume \u003d cinder_client.volumes.get(volume)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_6717fd51","line":31,"range":{"start_line":31,"start_character":34,"end_line":31,"end_character":36},"updated":"2016-03-12 02:58:20.000000000","message":"Change input to volume_id. confusing with volume var below which holds all the volume data","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":28,"context_line":"BLACKLISTED_FIELDS \u003d set((u\u0027links\u0027, u\u0027manager\u0027, \u0027_loaded\u0027, \u0027_info\u0027))"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def serialize_cinder_volume(volume):"},{"line_number":32,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"},{"line_number":33,"context_line":"    if isinstance(volume, six.text_type):"},{"line_number":34,"context_line":"        volume \u003d cinder_client.volumes.get(volume)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_8a5a1082","line":31,"range":{"start_line":31,"start_character":34,"end_line":31,"end_character":36},"in_reply_to":"3afc51ec_6717fd51","updated":"2016-03-12 03:30:27.000000000","message":"I think when this was written there was a hope of not always passing in an ID; that hope is dashed i think. Will clean it up.","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    if \u0027tenant_id\u0027 not in serialized:"},{"line_number":44,"context_line":"        serialized[\u0027tenant_id\u0027] \u003d project_id"},{"line_number":45,"context_line":"    if \u0027project_id\u0027 not in serialized:"},{"line_number":46,"context_line":"        serialized[\u0027project_id\u0027] \u003d project_id"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    return serialized"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_4a9be8c9","line":46,"range":{"start_line":46,"start_character":35,"end_line":46,"end_character":45},"updated":"2016-03-12 02:58:20.000000000","message":"Why two fields with same data?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    if \u0027tenant_id\u0027 not in serialized:"},{"line_number":44,"context_line":"        serialized[\u0027tenant_id\u0027] \u003d project_id"},{"line_number":45,"context_line":"    if \u0027project_id\u0027 not in serialized:"},{"line_number":46,"context_line":"        serialized[\u0027project_id\u0027] \u003d project_id"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    return serialized"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_ca541856","line":46,"range":{"start_line":46,"start_character":35,"end_line":46,"end_character":45},"in_reply_to":"3afc51ec_4a9be8c9","updated":"2016-03-12 03:30:27.000000000","message":"Openstack\u0027s moving to project_id instead of tenant, and cinder uses both interchangeably (snapshot uses project, volume tenant!) so storing both for ease of querying","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":48,"context_line":"    return serialized"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"def serialize_cinder_snapshot(snapshot):"},{"line_number":52,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"},{"line_number":53,"context_line":"    if isinstance(snapshot, six.text_type):"},{"line_number":54,"context_line":"        snapshot \u003d cinder_client.volume_snapshots.get(snapshot)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_a7090534","line":51,"range":{"start_line":51,"start_character":38,"end_line":51,"end_character":40},"updated":"2016-03-12 02:58:20.000000000","message":"Same as above","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    if \u0027tenant_id\u0027 not in serialized:"},{"line_number":65,"context_line":"        serialized[\u0027tenant_id\u0027] \u003d project_id"},{"line_number":66,"context_line":"    if \u0027project_id\u0027 not in serialized:"},{"line_number":67,"context_line":"        serialized[\u0027project_id\u0027] \u003d project_id"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    return serialized"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_2aa01cf4","line":67,"range":{"start_line":67,"start_character":35,"end_line":67,"end_character":45},"updated":"2016-03-12 02:58:20.000000000","message":"Why two fields with same data?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    return serialized"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def serialize_cinder_backup(backup):"},{"line_number":73,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"},{"line_number":74,"context_line":"    if isinstance(backup, six.text_type):"},{"line_number":75,"context_line":"        backup \u003d cinder_client.backups.get(backup)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_e7030d0e","line":72,"range":{"start_line":72,"start_character":34,"end_line":72,"end_character":36},"updated":"2016-03-12 02:58:20.000000000","message":"Same as above","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    return serialized"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"def serialize_cinder_backup(backup):"},{"line_number":73,"context_line":"    cinder_client \u003d openstack_clients.get_cinderclient()"},{"line_number":74,"context_line":"    if isinstance(backup, six.text_type):"},{"line_number":75,"context_line":"        backup \u003d cinder_client.backups.get(backup)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_aa51cc64","line":72,"range":{"start_line":72,"start_character":34,"end_line":72,"end_character":36},"in_reply_to":"3afc51ec_e7030d0e","updated":"2016-03-12 03:30:27.000000000","message":"Gonna remove this, backups aren\u0027t supported any more","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"}],"searchlight/elasticsearch/plugins/cinder/backups.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_fbfd183b","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_d9a2c598","line":1,"in_reply_to":"dae33548_fbfd183b","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins.cinder \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_5b39a440","line":16,"updated":"2016-02-17 00:42:50.000000000","message":"Is there a reason to switch to oslo_log for logging? Isn\u0027t this different from the other logging in Searchlight?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins.cinder \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_995ddd7b","line":16,"in_reply_to":"dae33548_5b39a440","updated":"2016-02-17 11:37:07.000000000","message":"./common/property_utils.py:from oslo_log import log as logging\n./common/utils.py:from oslo_log import log as logging\n./elasticsearch/plugins/designate/notification_handlers.py:from oslo_log import log as logging\n./cmd/manage.py:from oslo_log import log as logging\n./cmd/api.py:from oslo_log import log as logging\n./api/policy.py:from oslo_log import log as logging\n./api/common.py:from oslo_log import log as logging\n./api/v1/search.py:from oslo_log import log as logging\n./api/middleware/context.py:from oslo_log import log as logging\n./api/middleware/gzip.py:from oslo_log import log as logging\n\n\nSeems to be used in a bunch of places already  - I just copied one of them. I haven\u0027t checked for total consistency but the above particial grep results show olso_log is widely used already","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8a9c35aef8d589a8f2d8157d4cb1dd7474892755","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins.cinder \\"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_622810e3","line":16,"in_reply_to":"dae33548_995ddd7b","updated":"2016-02-17 15:59:15.000000000","message":"I\u0027m fine leaving this; it looks like we\u0027ve been inconsistent. Most of that code was ported from glance. I\u0027ll make a note to look at this.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"}],"searchlight/elasticsearch/plugins/cinder/backups_notification_handler.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_1b99dc1f","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_59ceb52e","line":1,"in_reply_to":"dae33548_1b99dc1f","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import cinderclient.exceptions"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":20,"context_line":"from searchlight.elasticsearch.plugins.cinder import serialize_cinder_backup"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_bbdc30e5","line":17,"updated":"2016-02-17 00:42:50.000000000","message":"Same comment about oslo_log.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import cinderclient.exceptions"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":20,"context_line":"from searchlight.elasticsearch.plugins.cinder import serialize_cinder_backup"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_99d4bdbd","line":17,"in_reply_to":"dae33548_bbdc30e5","updated":"2016-02-17 11:37:07.000000000","message":"Same reply","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            self.index_helper.save_document(payload)"},{"line_number":56,"context_line":"        except cinderclient.exceptions.NotFound:"},{"line_number":57,"context_line":"            LOG.warning(_LW(\"Backup %s not found; deleting\") % backup_id)"},{"line_number":58,"context_line":"            try:"},{"line_number":59,"context_line":"                self.index_helper.delete_document_by_id(backup_id)"},{"line_number":60,"context_line":"            except Exception as exc:"},{"line_number":61,"context_line":"                LOG.error(_LE("}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_76cbdfa5","line":58,"updated":"2016-02-17 00:42:50.000000000","message":"Instead of duplicating this code, should we refactor and call self.delete(payload) instead?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            except Exception as exc:"},{"line_number":61,"context_line":"                LOG.error(_LE("},{"line_number":62,"context_line":"                    \u0027Error deleting backup %(backup_id)s \u0027"},{"line_number":63,"context_line":"                    \u0027from index: %(exc)s\u0027) %"},{"line_number":64,"context_line":"                    {\u0027backup_id\u0027: backup_id, \u0027exc\u0027: exc})"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def delete(self, payload):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_362797b7","line":63,"updated":"2016-02-17 00:42:50.000000000","message":"\"exc\" is not the ElasticSearch index. It is the exception object. We should either remove the \"from index: ...\" part of the message or change it to refer to the exception data.\n\nThis probably needs to be done with all of the elasticsearch/plugins/*/*_notification_handler.py files.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            except Exception as exc:"},{"line_number":61,"context_line":"                LOG.error(_LE("},{"line_number":62,"context_line":"                    \u0027Error deleting backup %(backup_id)s \u0027"},{"line_number":63,"context_line":"                    \u0027from index: %(exc)s\u0027) %"},{"line_number":64,"context_line":"                    {\u0027backup_id\u0027: backup_id, \u0027exc\u0027: exc})"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def delete(self, payload):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_d98805c8","line":63,"in_reply_to":"dae33548_362797b7","updated":"2016-02-17 11:37:07.000000000","message":"I copied this from other plugins - I\u0027d suggest they should all be fixed at once, and not in this patch set?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        except Exception as exc:"},{"line_number":75,"context_line":"            LOG.error(_LE("},{"line_number":76,"context_line":"                \u0027Error deleting backup %(backup_id)s \u0027"},{"line_number":77,"context_line":"                \u0027from index: %(exc)s\u0027) %"},{"line_number":78,"context_line":"                {\u0027backup_id\u0027: backup_id, \u0027exc\u0027: exc})"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_96ab03d6","line":77,"updated":"2016-02-17 00:42:50.000000000","message":"Same exc comment as above.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"}],"searchlight/elasticsearch/plugins/cinder/snapshots.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_bb8a70bd","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_79be1966","line":1,"in_reply_to":"dae33548_bb8a70bd","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins.cinder import serialize_cinder_snapshot"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_163b739d","line":16,"updated":"2016-02-17 00:42:50.000000000","message":"Same comment for oslo_log.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class SnapshotIndex(base.IndexBase):"},{"line_number":32,"context_line":"    NotificationHandlerCls \u003d snapshots_notification_handler.SnapshotHandler"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ADMIN_ONLY_FIELDS \u003d []"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"},{"line_number":37,"context_line":"    def get_document_type(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_0a21e0fb","line":34,"range":{"start_line":34,"start_character":24,"end_line":34,"end_character":26},"updated":"2016-03-12 02:58:20.000000000","message":"Is this for future?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class SnapshotIndex(base.IndexBase):"},{"line_number":32,"context_line":"    NotificationHandlerCls \u003d snapshots_notification_handler.SnapshotHandler"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    ADMIN_ONLY_FIELDS \u003d []"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"    @classmethod"},{"line_number":37,"context_line":"    def get_document_type(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_4ac76812","line":34,"range":{"start_line":34,"start_character":24,"end_line":34,"end_character":26},"in_reply_to":"3afc51ec_0a21e0fb","updated":"2016-03-12 03:30:27.000000000","message":"Yeah, makes it easier if someone realizes it\u0027s required. We\u0027ve done this elsewhere.","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":72,"context_line":"                \u0027status\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":73,"context_line":"                \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":74,"context_line":"                \u0027project_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":75,"context_line":"                \u0027volume_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":76,"context_line":"            },"},{"line_number":77,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_aa3c2c30","line":74,"range":{"start_line":74,"start_character":71,"end_line":74,"end_character":74},"updated":"2016-03-12 02:58:20.000000000","message":"Same question as volume mapping. Why both tenant_id and project_id","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":72,"context_line":"                \u0027status\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":73,"context_line":"                \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":74,"context_line":"                \u0027project_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":75,"context_line":"                \u0027volume_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":76,"context_line":"            },"},{"line_number":77,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_2acc9c34","line":74,"range":{"start_line":74,"start_character":71,"end_line":74,"end_character":74},"in_reply_to":"3afc51ec_aa3c2c30","updated":"2016-03-12 03:30:27.000000000","message":"See the answer there","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"8cc808e65ebc6ec3ba0277151f9cf2b899a48ea7","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return SnapshotIndex.ADMIN_ONLY_FIELDS + from_conf"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @property"},{"line_number":85,"context_line":"    def facets_with_options(self):"},{"line_number":86,"context_line":"        return (\u0027status\u0027,)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_e3c4a893","line":85,"updated":"2016-03-11 21:38:31.000000000","message":"Should os-extended-snapshot-attributes:progress be an option field?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"fa200ccc2ad8652b0c2598d4e89d66a8bf940f12","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        return SnapshotIndex.ADMIN_ONLY_FIELDS + from_conf"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    @property"},{"line_number":85,"context_line":"    def facets_with_options(self):"},{"line_number":86,"context_line":"        return (\u0027status\u0027,)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_43947c36","line":85,"in_reply_to":"3afc51ec_e3c4a893","updated":"2016-03-12 02:51:44.000000000","message":"No - it\u0027s typically a numeric field with a percentage. And i\u0027ve never seen it not be 100% :)","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"2d5db75f79fa3a7c3ebd2df236b0a5375e32aaa4","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        \"\"\""},{"line_number":94,"context_line":"        # FIXME: DuncanT: Need to go through these carefully"},{"line_number":95,"context_line":"        return {\u0027user_id\u0027: True,"},{"line_number":96,"context_line":"                \u0027tenant_id\u0027: True,"},{"line_number":97,"context_line":"                \u0027project_id\u0027: True,"},{"line_number":98,"context_line":"                \u0027os-extended-snapshot-attributes:project_id\u0027: False}"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_8c5db749","line":96,"updated":"2016-03-15 05:05:09.000000000","message":"I\u0027d also just go to project here.  In the UI it is odd to see both pop up.","commit_id":"1eac56638570189f949eb0959e91ddb66b735bce"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"2d5db75f79fa3a7c3ebd2df236b0a5375e32aaa4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        return {\u0027user_id\u0027: True,"},{"line_number":96,"context_line":"                \u0027tenant_id\u0027: True,"},{"line_number":97,"context_line":"                \u0027project_id\u0027: True,"},{"line_number":98,"context_line":"                \u0027os-extended-snapshot-attributes:project_id\u0027: False}"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def _get_rbac_field_filters(self, request_context):"},{"line_number":101,"context_line":"        \"\"\"Return any RBAC field filters to be injected into an indices"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_ec7f1ba9","line":98,"updated":"2016-03-15 05:05:09.000000000","message":"need to add: os-extended-snapshot-attributes:progress","commit_id":"1eac56638570189f949eb0959e91ddb66b735bce"}],"searchlight/elasticsearch/plugins/cinder/snapshots_notification_handler.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_fb94f8e2","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_d9af6528","line":1,"in_reply_to":"dae33548_fb94f8e2","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import cinderclient.exceptions"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":20,"context_line":"from searchlight.elasticsearch.plugins.cinder import serialize_cinder_snapshot"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b6fa87bb","line":17,"updated":"2016-02-17 00:42:50.000000000","message":"oslo_log comment.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            self.index_helper.save_document(payload)"},{"line_number":56,"context_line":"        except cinderclient.exceptions.NotFound:"},{"line_number":57,"context_line":"            LOG.warning(_LW(\"Snapshot %s not found; deleting\") % snapshot_id)"},{"line_number":58,"context_line":"            try:"},{"line_number":59,"context_line":"                self.index_helper.delete_document_by_id(snapshot_id)"},{"line_number":60,"context_line":"            except Exception as exc:"},{"line_number":61,"context_line":"                LOG.error(_LE("}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_f61b6f19","line":58,"updated":"2016-02-17 00:42:50.000000000","message":"Same comments as in backups_notification_handler.py.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        except Exception as exc:"},{"line_number":75,"context_line":"            LOG.error(_LE("},{"line_number":76,"context_line":"                \u0027Error deleting snapshot %(snapshot_id)s \u0027"},{"line_number":77,"context_line":"                \u0027from index: %(exc)s\u0027) %"},{"line_number":78,"context_line":"                {\u0027snapshot_id\u0027: snapshot_id, \u0027exc\u0027: exc})"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_36d4b71e","line":77,"updated":"2016-02-17 00:42:50.000000000","message":"Same comments as in backups_notification_handler.py.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"}],"searchlight/elasticsearch/plugins/cinder/volumes.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_3bbdc068","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_7965791c","line":1,"in_reply_to":"dae33548_3bbdc068","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from oslo_log import log as logging"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins.cinder import serialize_cinder_volume"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_36bb17e7","line":16,"updated":"2016-02-17 00:42:50.000000000","message":"oslo_log comment.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    NotificationHandlerCls \u003d volumes_notification_handler.VolumeHandler"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    # Will be combined with \u0027admin_only_fields\u0027 from config"},{"line_number":35,"context_line":"    ADMIN_ONLY_FIELDS \u003d []"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_document_type(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_2f6f512c","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":26},"updated":"2016-02-16 16:26:38.000000000","message":"I think you\u0027ll want some of the extension fields in here for any extensions commonly installed by default:\n\n[\"os-vol-host-attr-*\"]  (plus maybe the migration ones?)","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    NotificationHandlerCls \u003d volumes_notification_handler.VolumeHandler"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    # Will be combined with \u0027admin_only_fields\u0027 from config"},{"line_number":35,"context_line":"    ADMIN_ONLY_FIELDS \u003d []"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_document_type(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_7933b914","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":26},"in_reply_to":"dae33548_2f6f512c","updated":"2016-02-17 11:37:07.000000000","message":"I\u0027m not sure of the the difference between putting them here and putting them in facets_excluded - can anybody explain what should go where please?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8a9c35aef8d589a8f2d8157d4cb1dd7474892755","unresolved":false,"context_lines":[{"line_number":32,"context_line":"    NotificationHandlerCls \u003d volumes_notification_handler.VolumeHandler"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    # Will be combined with \u0027admin_only_fields\u0027 from config"},{"line_number":35,"context_line":"    ADMIN_ONLY_FIELDS \u003d []"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    @classmethod"},{"line_number":38,"context_line":"    def get_document_type(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_82e2742d","line":35,"range":{"start_line":35,"start_character":24,"end_line":35,"end_character":26},"in_reply_to":"dae33548_7933b914","updated":"2016-02-17 15:59:15.000000000","message":"Yeah, documenting this has been on the TODO list for a while. facets_excluded removes a field from the list of fields returned as suggested search targets (typically things like duplicated date fields might be excluded entirely, or tenant_id might be excluded for non-admins since it\u0027s not useful). ADMIN_ONLY_FIELDS are those that should not be viewable or searchable by a non-administrative user (similar to how the CLI will return different field lists under different roles)","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                \u0027updated\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":57,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":58,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":59,"context_line":"                \u0027status\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":60,"context_line":"            },"},{"line_number":61,"context_line":"        }"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_9e4e956d","line":59,"range":{"start_line":59,"start_character":67,"end_line":59,"end_character":70},"updated":"2016-02-16 16:26:38.000000000","message":"Are there any other fields that are always/usually present in a deployment? volume_type and size, for instance? I\u0027m guessing migration_status and replication_status are from plugins and may not always be present","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                \u0027updated\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":57,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":58,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":59,"context_line":"                \u0027status\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":60,"context_line":"            },"},{"line_number":61,"context_line":"        }"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b4070817","line":59,"range":{"start_line":59,"start_character":67,"end_line":59,"end_character":70},"in_reply_to":"dae33548_9e4e956d","updated":"2016-02-17 11:37:07.000000000","message":"Not always present, and not always meaningful, but usually present since they are part of the default plugin list. I\u0027ll go through the field lists carefully. Is there any guidance for exactly what should go not_analysed?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8a9c35aef8d589a8f2d8157d4cb1dd7474892755","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                \u0027updated\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":57,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":58,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":59,"context_line":"                \u0027status\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":60,"context_line":"            },"},{"line_number":61,"context_line":"        }"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_2280c8f6","line":59,"range":{"start_line":59,"start_character":67,"end_line":59,"end_character":70},"in_reply_to":"dae33548_b4070817","updated":"2016-02-17 15:59:15.000000000","message":"not_analyzed tells elasticsearch not to break a field into tokens. Mostly this is used for id fields. As an example, the string \"aaa-bbb-111\" by default will be indexed by elasticsearch as the tokens [aaa,bbb,111]. A search for \u0027aaa-bbb-111\u0027 will not return any results. \nWhen marked not_analyzed it\u0027s stored verbatim, and will match on exact terms. To return partial matches wildcards have to be used (\u0027aaa-bb*\u0027).\n\nThe trick with \u0027name\u0027 is so that the name field is analyzed as tokens, but can also be sorted on its entire \u0027raw\u0027 value.\n\nI will make a note to document more of this; we\u0027ve been meaning to do it for ages.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        query. Document type will be added to this list."},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        return ["},{"line_number":93,"context_line":"            {\u0027term\u0027: {\u0027tenant_id\u0027: request_context.owner}}"},{"line_number":94,"context_line":"        ]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_objects(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_afa241ac","line":93,"range":{"start_line":93,"start_character":23,"end_line":93,"end_character":32},"updated":"2016-02-16 16:26:38.000000000","message":"I don\u0027t see tenant_id in the elasticsearch data; \"owner\" might be more correct (though currently it\u0027s mapped to user-id) or map os-vol-tenant-attr:tenant_id to tenant_id in serialization.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        query. Document type will be added to this list."},{"line_number":91,"context_line":"        \"\"\""},{"line_number":92,"context_line":"        return ["},{"line_number":93,"context_line":"            {\u0027term\u0027: {\u0027tenant_id\u0027: request_context.owner}}"},{"line_number":94,"context_line":"        ]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_objects(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_14199479","line":93,"range":{"start_line":93,"start_character":23,"end_line":93,"end_character":32},"in_reply_to":"dae33548_afa241ac","updated":"2016-02-17 11:37:07.000000000","message":"I\u0027ll look at this","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# TODO(sjmc7): Parameterize once we have plugin configs"},{"line_number":28,"context_line":"LIST_LIMIT \u003d 100"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class VolumeIndex(base.IndexBase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_875a0982","line":28,"range":{"start_line":28,"start_character":13,"end_line":28,"end_character":16},"updated":"2016-03-12 02:58:20.000000000","message":"Should be configurable now","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"# TODO(sjmc7): Parameterize once we have plugin configs"},{"line_number":28,"context_line":"LIST_LIMIT \u003d 100"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"class VolumeIndex(base.IndexBase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_6ad6a4c6","line":28,"range":{"start_line":28,"start_character":13,"end_line":28,"end_character":16},"in_reply_to":"3afc51ec_875a0982","updated":"2016-03-12 03:30:27.000000000","message":"It should... separate patch though i think. Probably makes sense to be the same for all plugins","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"8cc808e65ebc6ec3ba0277151f9cf2b899a48ea7","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_mapping(self):"},{"line_number":43,"context_line":"        str_not_analyzed \u003d {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027}"},{"line_number":44,"context_line":"        return {"},{"line_number":45,"context_line":"            \u0027dynamic\u0027: True,"},{"line_number":46,"context_line":"            \u0027properties\u0027: {"},{"line_number":47,"context_line":"                \u0027attachments\u0027: {"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_e3ce6882","line":44,"updated":"2016-03-11 21:38:31.000000000","message":"Why are there some facets excluded that aren\u0027t actually listed in the mapping?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"fa200ccc2ad8652b0c2598d4e89d66a8bf940f12","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def get_mapping(self):"},{"line_number":43,"context_line":"        str_not_analyzed \u003d {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027}"},{"line_number":44,"context_line":"        return {"},{"line_number":45,"context_line":"            \u0027dynamic\u0027: True,"},{"line_number":46,"context_line":"            \u0027properties\u0027: {"},{"line_number":47,"context_line":"                \u0027attachments\u0027: {"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_8a5850fc","line":44,"in_reply_to":"3afc51ec_e3ce6882","updated":"2016-03-12 02:51:44.000000000","message":"An oversight, good spot. Added","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    }"},{"line_number":69,"context_line":"                },"},{"line_number":70,"context_line":"                \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":71,"context_line":"                \u0027project_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":72,"context_line":"                \u0027user_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":73,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":74,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_07fd593a","line":71,"range":{"start_line":71,"start_character":71,"end_line":71,"end_character":74},"updated":"2016-03-12 02:58:20.000000000","message":"why do we need both tenant_id and project_id. are they different?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    }"},{"line_number":69,"context_line":"                },"},{"line_number":70,"context_line":"                \u0027tenant_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":71,"context_line":"                \u0027project_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":72,"context_line":"                \u0027user_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":73,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":74,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_aad8acf0","line":71,"range":{"start_line":71,"start_character":71,"end_line":71,"end_character":74},"in_reply_to":"3afc51ec_07fd593a","updated":"2016-03-12 03:30:27.000000000","message":"See answer in __init__, but i will add a comment","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"8cc808e65ebc6ec3ba0277151f9cf2b899a48ea7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return VolumeIndex.ADMIN_ONLY_FIELDS + from_conf"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @property"},{"line_number":92,"context_line":"    def facets_with_options(self):"},{"line_number":93,"context_line":"        return (\u0027status\u0027,)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_e320284c","line":92,"updated":"2016-03-11 21:38:31.000000000","message":"availability zone, bootable, encrypted, volume_type, replication_status all should be options. \n\nProbably add the following as well:  migration_status,","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"fa200ccc2ad8652b0c2598d4e89d66a8bf940f12","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        return VolumeIndex.ADMIN_ONLY_FIELDS + from_conf"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    @property"},{"line_number":92,"context_line":"    def facets_with_options(self):"},{"line_number":93,"context_line":"        return (\u0027status\u0027,)"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_6a2b4431","line":92,"in_reply_to":"3afc51ec_e320284c","updated":"2016-03-12 02:51:44.000000000","message":"migration_status and replication_status seem to be admin only, but i\u0027ll add them with an exclusion below. added the others too","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        return ["},{"line_number":117,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}}"},{"line_number":118,"context_line":"        ]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_objects(self):"},{"line_number":121,"context_line":"        \"\"\"Generator that lists all cinder volumes owned by all tenants.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_2a301c56","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":9},"updated":"2016-03-12 02:58:20.000000000","message":"There doesn\u0027t seem to be any documentation on whether cinder has ACL for non tenant users. There is this \"very outdated\" link https://blueprints.launchpad.net/cinder/+spec/volume-acl which mentions about ACL\u0027s but can\u0027t find anything in the current API.  Let\u0027s make sure that cinder acl is as simple as this RBAC filter :)","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"bd7939bdfa07474ef23197e0293b088937050242","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        return ["},{"line_number":117,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}}"},{"line_number":118,"context_line":"        ]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_objects(self):"},{"line_number":121,"context_line":"        \"\"\"Generator that lists all cinder volumes owned by all tenants.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_bccf48af","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":9},"in_reply_to":"3afc51ec_0ae600b4","updated":"2016-03-13 13:47:05.000000000","message":"Sorry, this is a victim of me cutting pieces out that weren\u0027t working in order to get a review up.\n\nThe RBAC work that I meant ot put in is for the image_metadata fields - they use the same RBAC as glance, in theory, though I don\u0027t know how well used/tested that code is anymore. I\u0027d suggest for now that image_metadata be admin only, and add the RBAC later, in order not to risk weakening the security model incorrectly","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"9f5a0b16f342dbf1ed3f5dd8e97932f8249a7263","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        return ["},{"line_number":117,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}}"},{"line_number":118,"context_line":"        ]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_objects(self):"},{"line_number":121,"context_line":"        \"\"\"Generator that lists all cinder volumes owned by all tenants.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_0ae600b4","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":9},"in_reply_to":"3afc51ec_2a301c56","updated":"2016-03-12 03:30:27.000000000","message":"Urgh. Duncan wrote this, so i assumed it was accurate. The CLI makes no mention of this, nor can i find any cinder documentation but it looks like it was implemented end of last year :(","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"719090ffc5698f938e64d614b8c7d7d380fc21b3","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        return ["},{"line_number":117,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}}"},{"line_number":118,"context_line":"        ]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_objects(self):"},{"line_number":121,"context_line":"        \"\"\"Generator that lists all cinder volumes owned by all tenants.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_d429448b","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":9},"in_reply_to":"3afc51ec_48f3de9e","updated":"2016-03-14 01:17:25.000000000","message":"@Duncan re: image-metadata.  We have the same thing for the glance plugin to filter out image metadata, so i\u0027d think we could do the same here.\n\nre: rbac, assuming that restricting access by tenant is as restrictive as cinder gets for accessing the general volume info, i also am okay with this going in without additional sharing (searchlight only initially showing same tenant / project).","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"117611946b07bb8ec5084a0ca833a708315f9f3d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        \"\"\""},{"line_number":116,"context_line":"        return ["},{"line_number":117,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}}"},{"line_number":118,"context_line":"        ]"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def get_objects(self):"},{"line_number":121,"context_line":"        \"\"\"Generator that lists all cinder volumes owned by all tenants.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_48f3de9e","line":118,"range":{"start_line":118,"start_character":8,"end_line":118,"end_character":9},"in_reply_to":"3afc51ec_bccf48af","updated":"2016-03-13 21:53:34.000000000","message":"It looks like image_metadata isn\u0027t included in the response to retrieve a volume, so that may not be an issue, though we can certainly make that admin only if necessary.\n\nThe RBAC here is what allows any given user to view and search a volume (or snapshot). Typically most stuff in openstack tends to be to limit by project/tenant, which is what this filter does. Some projects like glance and swift also have additional controls, primarily around granting access to other projects and/or users. It looks from that blueprint like cinder now has something similar.\n\nAs long as allowing access to a user in the same project is ok, I\u0027m fine with us potentially being less permissive than cinder itself until we can make it more sophisticated, but we can\u0027t be more restrictive. Is this a fair filter to apply? Or should we tighten it to user, or look for authentication information attached to a volume?","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"2d5db75f79fa3a7c3ebd2df236b0a5375e32aaa4","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    @property"},{"line_number":128,"context_line":"    def facets_excluded(self):"},{"line_number":129,"context_line":"        \"\"\"A map of {name: allow_admin} that indicate which"},{"line_number":130,"context_line":"        fields should not be offered as facet options, or those that should"},{"line_number":131,"context_line":"        only be available to administrators."},{"line_number":132,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_6c814bc3","line":129,"updated":"2016-03-15 05:05:09.000000000","message":"\"facet options\" is a bit confusing with the above.","commit_id":"1eac56638570189f949eb0959e91ddb66b735bce"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"2d5db75f79fa3a7c3ebd2df236b0a5375e32aaa4","unresolved":false,"context_lines":[{"line_number":130,"context_line":"        fields should not be offered as facet options, or those that should"},{"line_number":131,"context_line":"        only be available to administrators."},{"line_number":132,"context_line":"        \"\"\""},{"line_number":133,"context_line":"        return {\u0027os-vol-tenant-attr:tenant_id\u0027: True,"},{"line_number":134,"context_line":"                \u0027tenant_id\u0027: True,"},{"line_number":135,"context_line":"                \u0027project_id\u0027: True,"},{"line_number":136,"context_line":"                \u0027migration_status\u0027: True,"}],"source_content_type":"text/x-python","patch_set":10,"id":"3afc51ec_cc497fb9","line":133,"updated":"2016-03-15 05:05:09.000000000","message":"why do we offer both this attr and tenant_id and project_id as facets.  In the UI, it is very confusing.  It think it is fine that we have them all as available to query for backward compatibility but perhaps we should only show project_id in facets.","commit_id":"1eac56638570189f949eb0959e91ddb66b735bce"}],"searchlight/elasticsearch/plugins/cinder/volumes_notification_handler.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_1bc0bcdf","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Change copyright to 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_9423e4a6","line":1,"in_reply_to":"dae33548_1bc0bcdf","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import cinderclient.exceptions"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from searchlight.elasticsearch.plugins import base"},{"line_number":20,"context_line":"from searchlight.elasticsearch.plugins.cinder import serialize_cinder_volume"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_f6c52f3c","line":17,"updated":"2016-02-17 00:42:50.000000000","message":"oslo_log comment.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_event_handlers(self):"},{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027volume.update\u0027: self.create_or_update,"},{"line_number":42,"context_line":"            \u0027volume.exists\u0027: self.create_or_update,"},{"line_number":43,"context_line":"            \u0027volume.create.end\u0027: self.create_or_update,"},{"line_number":44,"context_line":"            \u0027volume.delete.end\u0027: self.delete,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_0a651be0","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":26},"updated":"2016-02-16 16:26:38.000000000","message":"Should be \u0027volume.update.end\u0027","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def get_event_handlers(self):"},{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027volume.update\u0027: self.create_or_update,"},{"line_number":42,"context_line":"            \u0027volume.exists\u0027: self.create_or_update,"},{"line_number":43,"context_line":"            \u0027volume.create.end\u0027: self.create_or_update,"},{"line_number":44,"context_line":"            \u0027volume.delete.end\u0027: self.delete,"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_744f406b","line":41,"range":{"start_line":41,"start_character":20,"end_line":41,"end_character":26},"in_reply_to":"dae33548_0a651be0","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"646eb090c401d92e3e575db0e7dc812aa5196b98","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def get_event_handlers(self):"},{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027volume.update\u0027: self.create_or_update,"},{"line_number":42,"context_line":"            \u0027volume.exists\u0027: self.create_or_update,"},{"line_number":43,"context_line":"            \u0027volume.create.end\u0027: self.create_or_update,"},{"line_number":44,"context_line":"            \u0027volume.delete.end\u0027: self.delete,"},{"line_number":45,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_8a780b91","line":42,"range":{"start_line":42,"start_character":20,"end_line":42,"end_character":26},"updated":"2016-02-16 16:26:38.000000000","message":"Probably don\u0027t need exists; we haven\u0027t decided whether we need to listen for it across the board","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    def get_event_handlers(self):"},{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027volume.update\u0027: self.create_or_update,"},{"line_number":42,"context_line":"            \u0027volume.exists\u0027: self.create_or_update,"},{"line_number":43,"context_line":"            \u0027volume.create.end\u0027: self.create_or_update,"},{"line_number":44,"context_line":"            \u0027volume.delete.end\u0027: self.delete,"},{"line_number":45,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_143074e7","line":42,"range":{"start_line":42,"start_character":20,"end_line":42,"end_character":26},"in_reply_to":"dae33548_8a780b91","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            self.index_helper.save_document(payload)"},{"line_number":56,"context_line":"        except cinderclient.exceptions.NotFound:"},{"line_number":57,"context_line":"            LOG.warning(_LW(\"Volume %s not found; deleting\") % volume_id)"},{"line_number":58,"context_line":"            try:"},{"line_number":59,"context_line":"                self.index_helper.delete_document_by_id(volume_id)"},{"line_number":60,"context_line":"            except Exception as exc:"},{"line_number":61,"context_line":"                LOG.error(_LE("}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_16089390","line":58,"updated":"2016-02-17 00:42:50.000000000","message":"Same comments as in backups_notification_handler.py.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        except Exception as exc:"},{"line_number":75,"context_line":"            LOG.error(_LE("},{"line_number":76,"context_line":"                \u0027Error deleting volume %(volume_id)s \u0027"},{"line_number":77,"context_line":"                \u0027from index: %(exc)s\u0027) %"},{"line_number":78,"context_line":"                {\u0027volume_id\u0027: volume_id, \u0027exc\u0027: exc})"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_b6f9e782","line":77,"updated":"2016-02-17 00:42:50.000000000","message":"Same comments as in backups_notification_handler.py.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":8959,"name":"Lakshmi N Sampath","email":"lakshmi.sampath@hp.com","username":"lakshmi"},"change_message_id":"f76bbcd251a37291f240833965b78733c0db1a36","unresolved":false,"context_lines":[{"line_number":65,"context_line":"            return"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"        try:"},{"line_number":68,"context_line":"            self.index_helper.delete_document({\u0027_id\u0027: volume_id})"},{"line_number":69,"context_line":"        except Exception as exc:"},{"line_number":70,"context_line":"            LOG.error(_LE("},{"line_number":71,"context_line":"                \u0027Error deleting volume %(volume_id)s \u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"3afc51ec_4731210b","line":68,"range":{"start_line":68,"start_character":63,"end_line":68,"end_character":65},"updated":"2016-03-12 02:58:20.000000000","message":"Even though a volume delete event cannot have occurred if snapshots were available, do you think it will be good to call delete_documents_with_parent to make sure all snapshots based on this volume are deleted/doesn\u0027t exist in ES, incase volume delete event came before snapshot delete event or ES index is out of sync for snapshots. Small explanation would be good.","commit_id":"340ac817054aab4a62fe65f3ab4380046f14a999"}],"searchlight/elasticsearch/plugins/openstack_clients.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_5bba446f","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Modify copyright to include 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_f4435040","line":1,"in_reply_to":"dae33548_5bba446f","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"}],"searchlight/tests/unit/v1/test_search.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Hewlett-Packard Corporation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_bbb1d091","line":1,"updated":"2016-02-17 00:42:50.000000000","message":"Modify copyright to include 2016.","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Hewlett-Packard Corporation"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_d440cc36","line":1,"in_reply_to":"dae33548_bbb1d091","updated":"2016-02-17 11:37:07.000000000","message":"Done","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b27c2e447c1af42904746d1c98e69def00c59b2","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            \u0027OS::Glance::Metadef\u0027,"},{"line_number":274,"context_line":"            \u0027OS::Nova::Server\u0027,"},{"line_number":275,"context_line":"            \u0027OS::Cinder::Volume\u0027,"},{"line_number":276,"context_line":"            \u0027OS::Cinder::Backup\u0027,"},{"line_number":277,"context_line":"        ]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        self.assertEqual([\u0027searchlight\u0027], output[\u0027index\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_361317ba","line":276,"updated":"2016-02-17 00:42:50.000000000","message":"We aren\u0027t testing OS::Cinder::Snapshot?","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"8a9c35aef8d589a8f2d8157d4cb1dd7474892755","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            \u0027OS::Glance::Metadef\u0027,"},{"line_number":274,"context_line":"            \u0027OS::Nova::Server\u0027,"},{"line_number":275,"context_line":"            \u0027OS::Cinder::Volume\u0027,"},{"line_number":276,"context_line":"            \u0027OS::Cinder::Backup\u0027,"},{"line_number":277,"context_line":"        ]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        self.assertEqual([\u0027searchlight\u0027], output[\u0027index\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_16c3498a","line":276,"in_reply_to":"dae33548_1447d44b","updated":"2016-02-17 15:59:15.000000000","message":"Grab one of us in IRC if you need a hand getting tox working","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"8b14059832d01737362568f0e83604055e0c949e","unresolved":false,"context_lines":[{"line_number":273,"context_line":"            \u0027OS::Glance::Metadef\u0027,"},{"line_number":274,"context_line":"            \u0027OS::Nova::Server\u0027,"},{"line_number":275,"context_line":"            \u0027OS::Cinder::Volume\u0027,"},{"line_number":276,"context_line":"            \u0027OS::Cinder::Backup\u0027,"},{"line_number":277,"context_line":"        ]"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"        self.assertEqual([\u0027searchlight\u0027], output[\u0027index\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"dae33548_1447d44b","line":276,"in_reply_to":"dae33548_361317ba","updated":"2016-02-17 11:37:07.000000000","message":"Done - I can\u0027t seem to get tox running locally so the tests have only been run (and failed so far) in the gate. I\u0027ll get some help to sort tox out today","commit_id":"77ed2e58f48c72f9b16e31541a6cf635480fe844"}]}
