)]}'
{"nova/scheduler/client/report.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"bb641873f4c0635817129003a3682067e73a7326","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        # NOTE(efried): We currently have no code path where we need to set the"},{"line_number":517,"context_line":"        # parent_provider_uuid on a previously-parent-less provider - so we do"},{"line_number":518,"context_line":"        # NOT handle that scenario here."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        try:"},{"line_number":521,"context_line":"            ptnode \u003d self._provider_tree.find(uuid)"},{"line_number":522,"context_line":"            self._refresh_aggregate_map(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_fd01626b","line":519,"updated":"2017-11-17 16:36:05.000000000","message":"meh, unnecessary blank line.","commit_id":"f70215691f5f2ba5da4d5f9ce00f7e4a891f7f50"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"88d2da941f89d7920d63912046d3e08da27e7083","unresolved":false,"context_lines":[{"line_number":516,"context_line":"        # NOTE(efried): We currently have no code path where we need to set the"},{"line_number":517,"context_line":"        # parent_provider_uuid on a previously-parent-less provider - so we do"},{"line_number":518,"context_line":"        # NOT handle that scenario here."},{"line_number":519,"context_line":""},{"line_number":520,"context_line":"        try:"},{"line_number":521,"context_line":"            ptnode \u003d self._provider_tree.find(uuid)"},{"line_number":522,"context_line":"            self._refresh_aggregate_map(uuid)"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f485f77_0d63ebb3","line":519,"in_reply_to":"1f485f77_fd01626b","updated":"2017-11-17 20:20:33.000000000","message":"Done","commit_id":"f70215691f5f2ba5da4d5f9ce00f7e4a891f7f50"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"06b43f92f2139ac490b50b6a1cd477962128b9a6","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                rp[\u0027name\u0027], uuid, rp[\u0027generation\u0027])"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"        # Not a root - we have to insert it into the proper place in the tree."},{"line_number":540,"context_line":"        # NOTE(efried): We populate self._provider_tree from the top down, so"},{"line_number":541,"context_line":"        # we can count on the parent being in the tree - we don\u0027t have to"},{"line_number":542,"context_line":"        # retrieve it from placement."},{"line_number":543,"context_line":"        return self._provider_tree.new_child(rp[\u0027name\u0027], parent_provider_uuid,"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_fd62153e","line":540,"updated":"2017-12-06 17:31:15.000000000","message":"cool, will this always be true?","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"5e133c0d1c3f1c6a605e696acb03832c10cafcc4","unresolved":false,"context_lines":[{"line_number":537,"context_line":"                rp[\u0027name\u0027], uuid, rp[\u0027generation\u0027])"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"        # Not a root - we have to insert it into the proper place in the tree."},{"line_number":540,"context_line":"        # NOTE(efried): We populate self._provider_tree from the top down, so"},{"line_number":541,"context_line":"        # we can count on the parent being in the tree - we don\u0027t have to"},{"line_number":542,"context_line":"        # retrieve it from placement."},{"line_number":543,"context_line":"        return self._provider_tree.new_child(rp[\u0027name\u0027], parent_provider_uuid,"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_91572d03","line":540,"in_reply_to":"df87a7cf_fd62153e","updated":"2017-12-06 23:10:36.000000000","message":"It\u0027s not a requirement that\u0027s enforced anywhere, no.  And at this point in the series we\u0027re not yet doing anything that will _ensure a non-root provider at all.  I guess this comment is more of a reminder to myself to make sure we do that stuff right when it comes to https://review.openstack.org/#/c/521098/ (whatever that winds up looking like).","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"}],"nova/tests/unit/scheduler/client/test_report.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3e688d4a787f4bfe1347ac0c7e5b8960a015d74f","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"        # Shouldn\u0027t be called now that provider is in cache..."},{"line_number":1183,"context_line":"        self.assertFalse(create_rp_mock.called)"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"        # Validate the path where we specify a name (don\u0027t default to the UUID)"},{"line_number":1186,"context_line":"        self.client._ensure_resource_provider(uuids.cn2, \u0027a-name\u0027)"},{"line_number":1187,"context_line":"        create_rp_mock.assert_called_once_with("},{"line_number":1188,"context_line":"                uuids.cn2, \u0027a-name\u0027, parent_provider_uuid\u003dNone)"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"    @mock.patch(\u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":1191,"context_line":"                \u0027_refresh_aggregate_map\u0027, new\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_a5ead1d4","line":1188,"range":{"start_line":1185,"start_character":0,"end_line":1188,"end_character":63},"updated":"2017-11-16 18:27:44.000000000","message":"we only look up by UUID at the moment, so the above isn\u0027t testing any different code path.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ceeeb1574f92b0346196388fdfdc78cbb7ff6920","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"        # Shouldn\u0027t be called now that provider is in cache..."},{"line_number":1183,"context_line":"        self.assertFalse(create_rp_mock.called)"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"        # Validate the path where we specify a name (don\u0027t default to the UUID)"},{"line_number":1186,"context_line":"        self.client._ensure_resource_provider(uuids.cn2, \u0027a-name\u0027)"},{"line_number":1187,"context_line":"        create_rp_mock.assert_called_once_with("},{"line_number":1188,"context_line":"                uuids.cn2, \u0027a-name\u0027, parent_provider_uuid\u003dNone)"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"    @mock.patch(\u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":1191,"context_line":"                \u0027_refresh_aggregate_map\u0027, new\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_5d92b64d","line":1188,"range":{"start_line":1185,"start_character":0,"end_line":1188,"end_character":63},"in_reply_to":"1f485f77_520cfc3f","updated":"2017-11-17 16:29:37.000000000","message":"ack. it\u0027s covered in the create case, just not in the ensure cases. ok.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cf79ea0501dfaf91a21fa5bb0fac3113d1d52b5e","unresolved":false,"context_lines":[{"line_number":1182,"context_line":"        # Shouldn\u0027t be called now that provider is in cache..."},{"line_number":1183,"context_line":"        self.assertFalse(create_rp_mock.called)"},{"line_number":1184,"context_line":""},{"line_number":1185,"context_line":"        # Validate the path where we specify a name (don\u0027t default to the UUID)"},{"line_number":1186,"context_line":"        self.client._ensure_resource_provider(uuids.cn2, \u0027a-name\u0027)"},{"line_number":1187,"context_line":"        create_rp_mock.assert_called_once_with("},{"line_number":1188,"context_line":"                uuids.cn2, \u0027a-name\u0027, parent_provider_uuid\u003dNone)"},{"line_number":1189,"context_line":""},{"line_number":1190,"context_line":"    @mock.patch(\u0027nova.scheduler.client.report.SchedulerReportClient.\u0027"},{"line_number":1191,"context_line":"                \u0027_refresh_aggregate_map\u0027, new\u003dmock.Mock())"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_520cfc3f","line":1188,"range":{"start_line":1185,"start_character":0,"end_line":1188,"end_character":63},"in_reply_to":"1f485f77_a5ead1d4","updated":"2017-11-16 21:21:17.000000000","message":"It\u0027s testing that when we specify a name, create gets called with that name instead of with the UUID as the name.  That\u0027s not tested elsewhere.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3e688d4a787f4bfe1347ac0c7e5b8960a015d74f","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                \u0027_get_resource_provider\u0027)"},{"line_number":1196,"context_line":"    def test_ensure_resource_provider_tree(self, get_rp_mock, create_rp_mock):"},{"line_number":1197,"context_line":"        \"\"\"Test _ensure_resource_provider with a tree of providers.\"\"\""},{"line_number":1198,"context_line":"        def _create_resource_provider(uuid, name, parent_provider_uuid\u003dNone):"},{"line_number":1199,"context_line":"            \"\"\"Mock side effect for creating the RP with the specified args.\"\"\""},{"line_number":1200,"context_line":"            return {"},{"line_number":1201,"context_line":"                \u0027uuid\u0027: uuid,"},{"line_number":1202,"context_line":"                \u0027name\u0027: name,"},{"line_number":1203,"context_line":"                \u0027generation\u0027: 0,"},{"line_number":1204,"context_line":"                \u0027parent_provider_uuid\u0027: parent_provider_uuid"},{"line_number":1205,"context_line":"            }"},{"line_number":1206,"context_line":"        create_rp_mock.side_effect \u003d _create_resource_provider"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        # Not initially in the placement database, so we have to create it."},{"line_number":1209,"context_line":"        get_rp_mock.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_85a235ad","line":1206,"range":{"start_line":1198,"start_character":8,"end_line":1206,"end_character":62},"updated":"2017-11-16 18:27:44.000000000","message":"there\u0027s no need to create a mock side effect function. Just do this:\n\n create_rp_mock.return_value \u003d {\n     ...\n }","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cf79ea0501dfaf91a21fa5bb0fac3113d1d52b5e","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                \u0027_get_resource_provider\u0027)"},{"line_number":1196,"context_line":"    def test_ensure_resource_provider_tree(self, get_rp_mock, create_rp_mock):"},{"line_number":1197,"context_line":"        \"\"\"Test _ensure_resource_provider with a tree of providers.\"\"\""},{"line_number":1198,"context_line":"        def _create_resource_provider(uuid, name, parent_provider_uuid\u003dNone):"},{"line_number":1199,"context_line":"            \"\"\"Mock side effect for creating the RP with the specified args.\"\"\""},{"line_number":1200,"context_line":"            return {"},{"line_number":1201,"context_line":"                \u0027uuid\u0027: uuid,"},{"line_number":1202,"context_line":"                \u0027name\u0027: name,"},{"line_number":1203,"context_line":"                \u0027generation\u0027: 0,"},{"line_number":1204,"context_line":"                \u0027parent_provider_uuid\u0027: parent_provider_uuid"},{"line_number":1205,"context_line":"            }"},{"line_number":1206,"context_line":"        create_rp_mock.side_effect \u003d _create_resource_provider"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        # Not initially in the placement database, so we have to create it."},{"line_number":1209,"context_line":"        get_rp_mock.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_9d54c5ff","line":1206,"range":{"start_line":1198,"start_character":8,"end_line":1206,"end_character":62},"in_reply_to":"1f485f77_85a235ad","updated":"2017-11-16 21:21:17.000000000","message":"In this test case, SchedulerReportClient._create_resource_provider is being called with different parameters each time.  This is returning the rp dict with whatever those parameters are each time.  And that\u0027s necessary because I\u0027m validating that each one got converted to a _Provider at the right spot in the tree.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"ceeeb1574f92b0346196388fdfdc78cbb7ff6920","unresolved":false,"context_lines":[{"line_number":1195,"context_line":"                \u0027_get_resource_provider\u0027)"},{"line_number":1196,"context_line":"    def test_ensure_resource_provider_tree(self, get_rp_mock, create_rp_mock):"},{"line_number":1197,"context_line":"        \"\"\"Test _ensure_resource_provider with a tree of providers.\"\"\""},{"line_number":1198,"context_line":"        def _create_resource_provider(uuid, name, parent_provider_uuid\u003dNone):"},{"line_number":1199,"context_line":"            \"\"\"Mock side effect for creating the RP with the specified args.\"\"\""},{"line_number":1200,"context_line":"            return {"},{"line_number":1201,"context_line":"                \u0027uuid\u0027: uuid,"},{"line_number":1202,"context_line":"                \u0027name\u0027: name,"},{"line_number":1203,"context_line":"                \u0027generation\u0027: 0,"},{"line_number":1204,"context_line":"                \u0027parent_provider_uuid\u0027: parent_provider_uuid"},{"line_number":1205,"context_line":"            }"},{"line_number":1206,"context_line":"        create_rp_mock.side_effect \u003d _create_resource_provider"},{"line_number":1207,"context_line":""},{"line_number":1208,"context_line":"        # Not initially in the placement database, so we have to create it."},{"line_number":1209,"context_line":"        get_rp_mock.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_3d95ba33","line":1206,"range":{"start_line":1198,"start_character":8,"end_line":1206,"end_character":62},"in_reply_to":"1f485f77_9d54c5ff","updated":"2017-11-17 16:29:37.000000000","message":"understood now, thanks.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"3e688d4a787f4bfe1347ac0c7e5b8960a015d74f","unresolved":false,"context_lines":[{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"        # At this point we should get all the providers by iterating on root."},{"line_number":1244,"context_line":"        self.assertEqual(set([root, child1, child2, grandchild]),"},{"line_number":1245,"context_line":"                         set([p for p in root]))"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"    def test_get_allocation_candidates(self):"},{"line_number":1248,"context_line":"        resp_mock \u003d mock.Mock(status_code\u003d200)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_e5a0c992","line":1245,"range":{"start_line":1245,"start_character":29,"end_line":1245,"end_character":46},"updated":"2017-11-16 18:27:44.000000000","message":"this is the only place I see where the nova.compute.provider_tree._Provider.__iter__() method is used. The problem with a _Provider.__iter__() method is that it\u0027s not thread-safe. ProviderTree is the thread-safe interface that should be used to query and operate on nodes in the tree. _Provider is a private object not intended to be exposed in this way.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"cf79ea0501dfaf91a21fa5bb0fac3113d1d52b5e","unresolved":false,"context_lines":[{"line_number":1242,"context_line":""},{"line_number":1243,"context_line":"        # At this point we should get all the providers by iterating on root."},{"line_number":1244,"context_line":"        self.assertEqual(set([root, child1, child2, grandchild]),"},{"line_number":1245,"context_line":"                         set([p for p in root]))"},{"line_number":1246,"context_line":""},{"line_number":1247,"context_line":"    def test_get_allocation_candidates(self):"},{"line_number":1248,"context_line":"        resp_mock \u003d mock.Mock(status_code\u003d200)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f485f77_7da7c90c","line":1245,"range":{"start_line":1245,"start_character":29,"end_line":1245,"end_character":46},"in_reply_to":"1f485f77_e5a0c992","updated":"2017-11-16 21:21:17.000000000","message":"Roger that; will adjust as suggested.","commit_id":"b2bf2ae28f82b765eecb1418468223e5eddfcd41"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"9de65a466a8085066e67d4a61f13f2c0819f5ced","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"        # TODO(efried): Replace with:"},{"line_number":1276,"context_line":"        # self.assertEqual("},{"line_number":1277,"context_line":"        #     set([uuids.root, uuids.child1, uuids.child2, uuids.grandchild]),"},{"line_number":1278,"context_line":"        #     self.client._provider_tree.get_provider_uuids())"},{"line_number":1279,"context_line":"        for uuid in [uuids.root, uuids.child1, uuids.child2, uuids.grandchild]:"},{"line_number":1280,"context_line":"            self.assertTrue(self.client._provider_tree.exists(uuid))"},{"line_number":1281,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_ac9c865d","line":1278,"updated":"2017-12-05 13:01:06.000000000","message":"I went ahead and did this since get_provider_uuids() is now merged.","commit_id":"1d6700375f06e81b8d4f3681e27691a4138a33f4"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"563f58b44bc003d64e9cf5861b2a17c34b3020f9","unresolved":false,"context_lines":[{"line_number":1275,"context_line":"        # TODO(efried): Replace with:"},{"line_number":1276,"context_line":"        # self.assertEqual("},{"line_number":1277,"context_line":"        #     set([uuids.root, uuids.child1, uuids.child2, uuids.grandchild]),"},{"line_number":1278,"context_line":"        #     self.client._provider_tree.get_provider_uuids())"},{"line_number":1279,"context_line":"        for uuid in [uuids.root, uuids.child1, uuids.child2, uuids.grandchild]:"},{"line_number":1280,"context_line":"            self.assertTrue(self.client._provider_tree.exists(uuid))"},{"line_number":1281,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df87a7cf_079eac53","line":1278,"in_reply_to":"df87a7cf_ac9c865d","updated":"2017-12-05 14:11:19.000000000","message":"Thanks Jay.","commit_id":"1d6700375f06e81b8d4f3681e27691a4138a33f4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"40155fb86ebbbf1f3f3f0e75e19fe69d5a5d5e48","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"                \u0027generation\u0027: 0,"},{"line_number":1231,"context_line":"                \u0027parent_provider_uuid\u0027: parent_provider_uuid"},{"line_number":1232,"context_line":"            }"},{"line_number":1233,"context_line":"        create_rp_mock.side_effect \u003d _create_resource_provider"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        # Not initially in the placement database, so we have to create it."},{"line_number":1236,"context_line":"        get_rp_mock.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_447473fe","line":1233,"updated":"2017-12-07 13:47:42.000000000","message":"You can use the following to avoid defining a nested function:\n  create_rp_mock.return_value \u003d {\u0027uuid\u0027: ...}","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dd39fa8759113a7befeb9b3f49e495d26a2dc64b","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"                \u0027generation\u0027: 0,"},{"line_number":1231,"context_line":"                \u0027parent_provider_uuid\u0027: parent_provider_uuid"},{"line_number":1232,"context_line":"            }"},{"line_number":1233,"context_line":"        create_rp_mock.side_effect \u003d _create_resource_provider"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        # Not initially in the placement database, so we have to create it."},{"line_number":1236,"context_line":"        get_rp_mock.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_53c3d638","line":1233,"in_reply_to":"df87a7cf_1fbf96b0","updated":"2017-12-07 16:39:43.000000000","message":"You are right. My bad.","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"817f702061880ce00db2af0f04aa15fe921a4282","unresolved":false,"context_lines":[{"line_number":1230,"context_line":"                \u0027generation\u0027: 0,"},{"line_number":1231,"context_line":"                \u0027parent_provider_uuid\u0027: parent_provider_uuid"},{"line_number":1232,"context_line":"            }"},{"line_number":1233,"context_line":"        create_rp_mock.side_effect \u003d _create_resource_provider"},{"line_number":1234,"context_line":""},{"line_number":1235,"context_line":"        # Not initially in the placement database, so we have to create it."},{"line_number":1236,"context_line":"        get_rp_mock.return_value \u003d None"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_1fbf96b0","line":1233,"in_reply_to":"df87a7cf_447473fe","updated":"2017-12-07 14:12:08.000000000","message":"Not in this case.  Jay mentioned the same thing in PS1 - see response there.","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"40155fb86ebbbf1f3f3f0e75e19fe69d5a5d5e48","unresolved":false,"context_lines":[{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"        # At this point we should get all the providers."},{"line_number":1264,"context_line":"        self.assertEqual("},{"line_number":1265,"context_line":"            set([uuids.root, uuids.child1, uuids.child2, uuids.grandchild]),"},{"line_number":1266,"context_line":"            self.client._provider_tree.get_provider_uuids())"},{"line_number":1267,"context_line":""},{"line_number":1268,"context_line":"    def test_get_allocation_candidates(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_e4d347d4","line":1265,"range":{"start_line":1265,"start_character":12,"end_line":1265,"end_character":74},"updated":"2017-12-07 13:47:42.000000000","message":"You can simply say:\n{uuids.root, uuids.child1, uuids.child2, uuids.grandchild}","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"817f702061880ce00db2af0f04aa15fe921a4282","unresolved":false,"context_lines":[{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"        # At this point we should get all the providers."},{"line_number":1264,"context_line":"        self.assertEqual("},{"line_number":1265,"context_line":"            set([uuids.root, uuids.child1, uuids.child2, uuids.grandchild]),"},{"line_number":1266,"context_line":"            self.client._provider_tree.get_provider_uuids())"},{"line_number":1267,"context_line":""},{"line_number":1268,"context_line":"    def test_get_allocation_candidates(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_ff075281","line":1265,"range":{"start_line":1265,"start_character":12,"end_line":1265,"end_character":74},"in_reply_to":"df87a7cf_e4d347d4","updated":"2017-12-07 14:12:08.000000000","message":"I know, and that\u0027s my preferred syntax, but Jay complains about his eyesight whenever I do it that way :$","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"dd39fa8759113a7befeb9b3f49e495d26a2dc64b","unresolved":false,"context_lines":[{"line_number":1262,"context_line":""},{"line_number":1263,"context_line":"        # At this point we should get all the providers."},{"line_number":1264,"context_line":"        self.assertEqual("},{"line_number":1265,"context_line":"            set([uuids.root, uuids.child1, uuids.child2, uuids.grandchild]),"},{"line_number":1266,"context_line":"            self.client._provider_tree.get_provider_uuids())"},{"line_number":1267,"context_line":""},{"line_number":1268,"context_line":"    def test_get_allocation_candidates(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"df87a7cf_330df2a0","line":1265,"range":{"start_line":1265,"start_character":12,"end_line":1265,"end_character":74},"in_reply_to":"df87a7cf_ff075281","updated":"2017-12-07 16:39:43.000000000","message":":)","commit_id":"b75b35f4826241231c2609f32af7a14d9bba98fc"}]}
