)]}'
{"searchlight/elasticsearch/plugins/glance/images.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9958ba0438a38cac02cf671cf5ef733fafa81339","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027checksum\u0027, \u0027created_at\u0027, \u0027container_format\u0027, \u0027disk_format\u0027, \u0027id\u0027,"},{"line_number":35,"context_line":"            \u0027min_disk\u0027, \u0027min_ram\u0027, \u0027name\u0027, \u0027size\u0027, \u0027virtual_size\u0027, \u0027status\u0027,"},{"line_number":36,"context_line":"            \u0027tags\u0027, \u0027updated_at\u0027, \u0027visibility\u0027, \u0027protected\u0027, \u0027owner\u0027,"},{"line_number":37,"context_line":"            \u0027members\u0027, \u0027project_id\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def get_document_type(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_757ff714","line":37,"updated":"2016-06-01 20:44:44.000000000","message":"Do we also need to create a facets_excluded function for Glance to exclude \"project_id\" from being a facet?","commit_id":"dbe6b1b32f4b50434fb65587701e55c9b09642d6"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"d941c9775ade07d8f965df19c4f538138973dd24","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027checksum\u0027, \u0027created_at\u0027, \u0027container_format\u0027, \u0027disk_format\u0027, \u0027id\u0027,"},{"line_number":35,"context_line":"            \u0027min_disk\u0027, \u0027min_ram\u0027, \u0027name\u0027, \u0027size\u0027, \u0027virtual_size\u0027, \u0027status\u0027,"},{"line_number":36,"context_line":"            \u0027tags\u0027, \u0027updated_at\u0027, \u0027visibility\u0027, \u0027protected\u0027, \u0027owner\u0027,"},{"line_number":37,"context_line":"            \u0027members\u0027, \u0027project_id\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def get_document_type(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_1ad5a5b8","line":37,"in_reply_to":"9abb7d3a_557593c8","updated":"2016-06-06 17:28:52.000000000","message":"Added project id and owner as admin-only facets","commit_id":"dbe6b1b32f4b50434fb65587701e55c9b09642d6"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"91e90270adec9bdb77b3c0b0e47b56f327f403d8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"            \u0027checksum\u0027, \u0027created_at\u0027, \u0027container_format\u0027, \u0027disk_format\u0027, \u0027id\u0027,"},{"line_number":35,"context_line":"            \u0027min_disk\u0027, \u0027min_ram\u0027, \u0027name\u0027, \u0027size\u0027, \u0027virtual_size\u0027, \u0027status\u0027,"},{"line_number":36,"context_line":"            \u0027tags\u0027, \u0027updated_at\u0027, \u0027visibility\u0027, \u0027protected\u0027, \u0027owner\u0027,"},{"line_number":37,"context_line":"            \u0027members\u0027, \u0027project_id\u0027]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def get_document_type(cls):"}],"source_content_type":"text/x-python","patch_set":7,"id":"9abb7d3a_557593c8","line":37,"in_reply_to":"9abb7d3a_757ff714","updated":"2016-06-01 20:50:40.000000000","message":"That\u0027s a good question and I\u0027m not sure what the right answer is...  On the one hand, \"owner\" is the glance term, but as a new use, do I need to know that or is it better to always see project id.  I\u0027d lean toward allowing project ID for standardization. But can see what others think.","commit_id":"dbe6b1b32f4b50434fb65587701e55c9b09642d6"}],"searchlight/elasticsearch/plugins/neutron/networks.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"501a43cde23d3cf022d5a78f5ba988945a6b83a3","unresolved":false,"context_lines":[{"line_number":77,"context_line":"            \u0027bool\u0027: {"},{"line_number":78,"context_line":"                \u0027should\u0027: ["},{"line_number":79,"context_line":"                    {\u0027term\u0027: {\u0027tenant_id\u0027: request_context.owner}},"},{"line_number":80,"context_line":"                    {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}},"},{"line_number":81,"context_line":"                    {\u0027term\u0027: {\u0027router:external\u0027: True}},"},{"line_number":82,"context_line":"                    {\u0027term\u0027: {\u0027shared\u0027: True}}"},{"line_number":83,"context_line":"                ]"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_c88bf566","line":80,"range":{"start_line":80,"start_character":44,"end_line":80,"end_character":59},"updated":"2016-03-09 21:23:33.000000000","message":"This is not necessary; tenant_id and project_id should be the same. It\u0027s fine to continue checking tenant_id (this line isn\u0027t needed)","commit_id":"f472e3c3810c7d5cecae3709d200201f903d9708"}],"searchlight/elasticsearch/plugins/neutron/ports.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"501a43cde23d3cf022d5a78f5ba988945a6b83a3","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    def _get_rbac_field_filters(self, request_context):"},{"line_number":78,"context_line":"        return ["},{"line_number":79,"context_line":"            {\u0027term\u0027: {\u0027tenant_id\u0027: request_context.owner}},"},{"line_number":80,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}},"},{"line_number":81,"context_line":"        ]"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    def get_objects(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_a8df8967","line":80,"range":{"start_line":80,"start_character":33,"end_line":80,"end_character":35},"updated":"2016-03-09 21:23:33.000000000","message":"This line isn\u0027t necessary (see networks change)","commit_id":"f472e3c3810c7d5cecae3709d200201f903d9708"}],"searchlight/elasticsearch/plugins/nova/__init__.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"501a43cde23d3cf022d5a78f5ba988945a6b83a3","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        server \u003d nc_client.servers.get(server)"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    LOG.debug(\"Serializing server %s for project %s\","},{"line_number":39,"context_line":"              server.id, server.tenant_id)"},{"line_number":40,"context_line":"    serialized \u003d {k: v for k, v in six.iteritems(server.to_dict())"},{"line_number":41,"context_line":"                  if k not in BLACKLISTED_FIELDS}"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_28d2595c","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":23},"updated":"2016-03-09 21:23:33.000000000","message":"Whitespace change is unnecessary","commit_id":"f472e3c3810c7d5cecae3709d200201f903d9708"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"501a43cde23d3cf022d5a78f5ba988945a6b83a3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                  if k not in BLACKLISTED_FIELDS}"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    # Some enhancements"},{"line_number":44,"context_line":"    serialized[u\u0027owner\u0027] \u003d server.tenant_id"},{"line_number":45,"context_line":"    serialized[u\u0027image\u0027].pop(u\u0027links\u0027, None)"},{"line_number":46,"context_line":"    serialized[u\u0027flavor\u0027].pop(u\u0027links\u0027, None)"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_4844051a","line":44,"range":{"start_line":44,"start_character":25,"end_line":44,"end_character":26},"updated":"2016-03-09 21:23:33.000000000","message":"We\u0027ll need to set \u0027project_id\u0027 here too","commit_id":"f472e3c3810c7d5cecae3709d200201f903d9708"}],"searchlight/elasticsearch/plugins/nova/servers.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"501a43cde23d3cf022d5a78f5ba988945a6b83a3","unresolved":false,"context_lines":[{"line_number":127,"context_line":"        \"\"\""},{"line_number":128,"context_line":"        return ["},{"line_number":129,"context_line":"            {\u0027term\u0027: {\u0027tenant_id\u0027: request_context.owner}},"},{"line_number":130,"context_line":"            {\u0027term\u0027: {\u0027project_id\u0027: request_context.owner}}"},{"line_number":131,"context_line":"        ]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_objects(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"5aef4532_e8bcf107","line":130,"range":{"start_line":130,"start_character":36,"end_line":130,"end_character":51},"updated":"2016-03-09 21:23:33.000000000","message":"Can just check tenant_id for now. See comment in networks.py","commit_id":"f472e3c3810c7d5cecae3709d200201f903d9708"}],"searchlight/tests/unit/test_glance_image_plugin.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"9b37297522b3632fdff4516e88120211b2654d24","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        facet_names \u003d [f[\u0027name\u0027] for f in facets]"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        # Glance has no nested fields and no special ones that would be faceted"},{"line_number":658,"context_line":"        expected_facet_names \u003d self.plugin.get_mapping()[\u0027properties\u0027].keys()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        self.assertEqual(set(expected_facet_names), set(facet_names))"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_fb053bc2","line":658,"updated":"2016-06-06 18:24:36.000000000","message":"This test is now failing with the new excluded facets.\n\nNow that we are excluding facets, we need to exclude them from expected_facet_names. Something like this should work (between lines 658 and 660):\n\n    for ex in self.plugin.facets_excluded:\n        expected_facet_names.remove(ex)\n\nThe comment on line 657 should also change!","commit_id":"e8d86c996d2bbad979efb8b90a639edde458985a"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"0c04510140d8c609a182786cc91e567cc00f629b","unresolved":false,"context_lines":[{"line_number":655,"context_line":"        facet_names \u003d [f[\u0027name\u0027] for f in facets]"},{"line_number":656,"context_line":""},{"line_number":657,"context_line":"        # Glance has no nested fields and no special ones that would be faceted"},{"line_number":658,"context_line":"        expected_facet_names \u003d self.plugin.get_mapping()[\u0027properties\u0027].keys()"},{"line_number":659,"context_line":""},{"line_number":660,"context_line":"        self.assertEqual(set(expected_facet_names), set(facet_names))"},{"line_number":661,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7aa08908_dcab121c","line":658,"in_reply_to":"7aa08908_fb053bc2","updated":"2016-06-06 20:46:04.000000000","message":"Whoops, thanks, done.","commit_id":"e8d86c996d2bbad979efb8b90a639edde458985a"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"b1729ac38e9943066dd41873edcbf36a16df3b15","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # non admins"},{"line_number":659,"context_line":"        expected_facet_names \u003d self.plugin.get_mapping()[\u0027properties\u0027].keys()"},{"line_number":660,"context_line":"        expected_facet_names \u003d set(expected_facet_names) - set((\u0027owner\u0027,"},{"line_number":661,"context_line":"                                                                \u0027project_id\u0027))"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self.assertEqual(set(expected_facet_names), set(facet_names))"},{"line_number":664,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_bd26fdb7","line":661,"updated":"2016-06-06 22:45:50.000000000","message":"I\u0027m never a fan of hard-coding the same values in multiple places, unless of course I\u0027m doing it :) This means any future changes to the exclude list needs to occur both here and in elasticsearch/plugins/glance/images.py. As opposed to calling self.facets_excuded.","commit_id":"28265c1e389ffd72a62bae46497a4d076dfc713a"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"6af7d8b84a0633386f7c3594df1e42d0ae24bdf7","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # non admins"},{"line_number":659,"context_line":"        expected_facet_names \u003d self.plugin.get_mapping()[\u0027properties\u0027].keys()"},{"line_number":660,"context_line":"        expected_facet_names \u003d set(expected_facet_names) - set((\u0027owner\u0027,"},{"line_number":661,"context_line":"                                                                \u0027project_id\u0027))"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self.assertEqual(set(expected_facet_names), set(facet_names))"},{"line_number":664,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_e87ecc17","line":661,"in_reply_to":"7aa08908_bd26fdb7","updated":"2016-06-07 16:55:37.000000000","message":"I\u0027m in two minds; i think repetition in a test specifically to test expected values is ok because otherwise modifying the property will automatically pass tests even if it\u0027s then wrong. I\u0027d agree in functions which aren\u0027t explicitly testing the values themselves.","commit_id":"28265c1e389ffd72a62bae46497a4d076dfc713a"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"73844d75cbbc44dc1647735d068bba09130ef3da","unresolved":false,"context_lines":[{"line_number":658,"context_line":"        # non admins"},{"line_number":659,"context_line":"        expected_facet_names \u003d self.plugin.get_mapping()[\u0027properties\u0027].keys()"},{"line_number":660,"context_line":"        expected_facet_names \u003d set(expected_facet_names) - set((\u0027owner\u0027,"},{"line_number":661,"context_line":"                                                                \u0027project_id\u0027))"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        self.assertEqual(set(expected_facet_names), set(facet_names))"},{"line_number":664,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_afb20604","line":661,"in_reply_to":"7aa08908_e87ecc17","updated":"2016-06-07 18:14:36.000000000","message":"Either way is fine. Let\u0027s leave it as is.","commit_id":"28265c1e389ffd72a62bae46497a4d076dfc713a"}],"searchlight/tests/unit/test_neutron_port_plugin.py":[{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"d3485abd3912b27d9be82c3fbc7a15ab2ab4ee0b","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            listed_objects \u003d list(self.plugin.get_objects())"},{"line_number":139,"context_line":"            self.assertEqual([self.port1], listed_objects)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @mock.patch(\u0027searchlight.elasticsearch.plugins.utils.get_now_str\u0027)"},{"line_number":142,"context_line":"    def test_serialize(self, mock_utcnow_str):"},{"line_number":143,"context_line":"        mock_utcnow_str.return_value \u003d _now_str"},{"line_number":144,"context_line":"        serialized \u003d self.plugin.serialize(self.port1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_056af2ed","line":141,"updated":"2016-06-08 09:37:45.000000000","message":"The mock here doesn\u0027t get called in the test. Port serialization doesn\u0027t use get_now_str method. Only router serialization checks the existence of \u0027update_at\u0027 attribute.","commit_id":"28265c1e389ffd72a62bae46497a4d076dfc713a"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"6b599d977fc1cd01248d37ffed62b63f2edaf0ea","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            listed_objects \u003d list(self.plugin.get_objects())"},{"line_number":139,"context_line":"            self.assertEqual([self.port1], listed_objects)"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"    @mock.patch(\u0027searchlight.elasticsearch.plugins.utils.get_now_str\u0027)"},{"line_number":142,"context_line":"    def test_serialize(self, mock_utcnow_str):"},{"line_number":143,"context_line":"        mock_utcnow_str.return_value \u003d _now_str"},{"line_number":144,"context_line":"        serialized \u003d self.plugin.serialize(self.port1)"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_57c2bf85","line":141,"in_reply_to":"7aa08908_056af2ed","updated":"2016-06-08 22:15:46.000000000","message":"So it does! Thanks","commit_id":"28265c1e389ffd72a62bae46497a4d076dfc713a"}]}
