)]}'
{"nova/tests/functional/db/test_allocation_candidates.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"3544faa64731fed11074f757485dd407b83ef1bd","unresolved":false,"context_lines":[{"line_number":1185,"context_line":""},{"line_number":1186,"context_line":"    def test_simple_tree_of_providers(self):"},{"line_number":1187,"context_line":"        \"\"\"Create a hierarchy of resource providers with various inventories"},{"line_number":1188,"context_line":"        and traits on the different levels of provider and see that allocation"},{"line_number":1189,"context_line":"        candidates return information on all relevant nodes in the tree."},{"line_number":1190,"context_line":"        \"\"\""},{"line_number":1191,"context_line":"        # We are setting up a tree of providers that looks like this:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_1911e4ac","line":1188,"range":{"start_line":1188,"start_character":12,"end_line":1188,"end_character":18},"updated":"2018-01-08 17:12:40.000000000","message":"This ain\u0027t doing traits (yet).","commit_id":"05c45096983d77122913dfea0fd45c3590bc2232"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"366e8f848db1c64bfd237825bc5fcbc5ba52c53f","unresolved":false,"context_lines":[{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"        # Create some VCPU and MEMORY_MB inventory on the compute node, and"},{"line_number":1238,"context_line":"        # some inventory of SRIOV_NET_VFs on each physical function. No"},{"line_number":1239,"context_line":"        # inventory for the NUMA cell providers."},{"line_number":1240,"context_line":"        cn_invs \u003d ["},{"line_number":1241,"context_line":"            rp_obj.Inventory("},{"line_number":1242,"context_line":"                resource_provider\u003dcn,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_51d689f3","line":1239,"updated":"2018-01-05 19:38:51.000000000","message":"Why not use the _add_inventory() method to do these?","commit_id":"05c45096983d77122913dfea0fd45c3590bc2232"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"c18831cf405efe013604c44acfd053d45243cb99","unresolved":false,"context_lines":[{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"        # Create some VCPU and MEMORY_MB inventory on the compute node, and"},{"line_number":1238,"context_line":"        # some inventory of SRIOV_NET_VFs on each physical function. No"},{"line_number":1239,"context_line":"        # inventory for the NUMA cell providers."},{"line_number":1240,"context_line":"        cn_invs \u003d ["},{"line_number":1241,"context_line":"            rp_obj.Inventory("},{"line_number":1242,"context_line":"                resource_provider\u003dcn,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f91af0f_046441b8","line":1239,"in_reply_to":"9f91af0f_51d689f3","updated":"2018-01-05 20:09:01.000000000","message":"ack, will do. I copied the test_nested_providers() method from the test_resource_provider.py module originally...","commit_id":"05c45096983d77122913dfea0fd45c3590bc2232"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0e177f3ae583dddd935377c2a0a0cdedefd4fcdc","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        #               |                    |"},{"line_number":1198,"context_line":"        #               |                    |"},{"line_number":1199,"context_line":"        #              pf 0                 pf 1"},{"line_number":1200,"context_line":"        cn \u003d rp_obj.ResourceProvider("},{"line_number":1201,"context_line":"            context\u003dself.ctx,"},{"line_number":1202,"context_line":"            uuid\u003duuids.cn,"},{"line_number":1203,"context_line":"            name\u003d\u0027cn\u0027,"},{"line_number":1204,"context_line":"        )"},{"line_number":1205,"context_line":"        cn.create()"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"        numa_cell0 \u003d rp_obj.ResourceProvider("},{"line_number":1208,"context_line":"            context\u003dself.ctx,"},{"line_number":1209,"context_line":"            uuid\u003duuids.numa_cell0,"},{"line_number":1210,"context_line":"            name\u003d\u0027numa_cell0\u0027,"},{"line_number":1211,"context_line":"            parent_provider_uuid\u003duuids.cn,"},{"line_number":1212,"context_line":"        )"},{"line_number":1213,"context_line":"        numa_cell0.create()"},{"line_number":1214,"context_line":"        numa_cell1 \u003d rp_obj.ResourceProvider("},{"line_number":1215,"context_line":"            context\u003dself.ctx,"},{"line_number":1216,"context_line":"            uuid\u003duuids.numa_cell1,"},{"line_number":1217,"context_line":"            name\u003d\u0027numa_cell1\u0027,"},{"line_number":1218,"context_line":"            parent_provider_uuid\u003duuids.cn,"},{"line_number":1219,"context_line":"        )"},{"line_number":1220,"context_line":"        numa_cell1.create()"},{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"        pf0 \u003d rp_obj.ResourceProvider("},{"line_number":1223,"context_line":"            context\u003dself.ctx,"},{"line_number":1224,"context_line":"            uuid\u003duuids.pf0,"},{"line_number":1225,"context_line":"            name\u003d\u0027pf0\u0027,"},{"line_number":1226,"context_line":"            parent_provider_uuid\u003duuids.numa_cell0,"},{"line_number":1227,"context_line":"        )"},{"line_number":1228,"context_line":"        pf0.create()"},{"line_number":1229,"context_line":"        pf1 \u003d rp_obj.ResourceProvider("},{"line_number":1230,"context_line":"            context\u003dself.ctx,"},{"line_number":1231,"context_line":"            uuid\u003duuids.pf1,"},{"line_number":1232,"context_line":"            name\u003d\u0027pf1\u0027,"},{"line_number":1233,"context_line":"            parent_provider_uuid\u003duuids.numa_cell1,"},{"line_number":1234,"context_line":"        )"},{"line_number":1235,"context_line":"        pf1.create()"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"        # Create some VCPU and MEMORY_MB inventory on the compute node, and"},{"line_number":1238,"context_line":"        # some inventory of SRIOV_NET_VFs on each physical function. No"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_d4a6deab","line":1235,"range":{"start_line":1200,"start_character":0,"end_line":1235,"end_character":20},"updated":"2018-01-08 22:01:25.000000000","message":"Ugh, was gonna say use self._create_provider(...), but *aggs kills the ability to extend its arg spec.  I\u0027ll throw up a followon that refactors that guy to take [aggs] and parent_provider_uuid\u003dNone.","commit_id":"75105cca03555c3053e5c200c2df7b447667c535"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"1fe276756429fa4ae86a30741b74670bcfa31afb","unresolved":false,"context_lines":[{"line_number":1197,"context_line":"        #               |                    |"},{"line_number":1198,"context_line":"        #               |                    |"},{"line_number":1199,"context_line":"        #              pf 0                 pf 1"},{"line_number":1200,"context_line":"        cn \u003d rp_obj.ResourceProvider("},{"line_number":1201,"context_line":"            context\u003dself.ctx,"},{"line_number":1202,"context_line":"            uuid\u003duuids.cn,"},{"line_number":1203,"context_line":"            name\u003d\u0027cn\u0027,"},{"line_number":1204,"context_line":"        )"},{"line_number":1205,"context_line":"        cn.create()"},{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"        numa_cell0 \u003d rp_obj.ResourceProvider("},{"line_number":1208,"context_line":"            context\u003dself.ctx,"},{"line_number":1209,"context_line":"            uuid\u003duuids.numa_cell0,"},{"line_number":1210,"context_line":"            name\u003d\u0027numa_cell0\u0027,"},{"line_number":1211,"context_line":"            parent_provider_uuid\u003duuids.cn,"},{"line_number":1212,"context_line":"        )"},{"line_number":1213,"context_line":"        numa_cell0.create()"},{"line_number":1214,"context_line":"        numa_cell1 \u003d rp_obj.ResourceProvider("},{"line_number":1215,"context_line":"            context\u003dself.ctx,"},{"line_number":1216,"context_line":"            uuid\u003duuids.numa_cell1,"},{"line_number":1217,"context_line":"            name\u003d\u0027numa_cell1\u0027,"},{"line_number":1218,"context_line":"            parent_provider_uuid\u003duuids.cn,"},{"line_number":1219,"context_line":"        )"},{"line_number":1220,"context_line":"        numa_cell1.create()"},{"line_number":1221,"context_line":""},{"line_number":1222,"context_line":"        pf0 \u003d rp_obj.ResourceProvider("},{"line_number":1223,"context_line":"            context\u003dself.ctx,"},{"line_number":1224,"context_line":"            uuid\u003duuids.pf0,"},{"line_number":1225,"context_line":"            name\u003d\u0027pf0\u0027,"},{"line_number":1226,"context_line":"            parent_provider_uuid\u003duuids.numa_cell0,"},{"line_number":1227,"context_line":"        )"},{"line_number":1228,"context_line":"        pf0.create()"},{"line_number":1229,"context_line":"        pf1 \u003d rp_obj.ResourceProvider("},{"line_number":1230,"context_line":"            context\u003dself.ctx,"},{"line_number":1231,"context_line":"            uuid\u003duuids.pf1,"},{"line_number":1232,"context_line":"            name\u003d\u0027pf1\u0027,"},{"line_number":1233,"context_line":"            parent_provider_uuid\u003duuids.numa_cell1,"},{"line_number":1234,"context_line":"        )"},{"line_number":1235,"context_line":"        pf1.create()"},{"line_number":1236,"context_line":""},{"line_number":1237,"context_line":"        # Create some VCPU and MEMORY_MB inventory on the compute node, and"},{"line_number":1238,"context_line":"        # some inventory of SRIOV_NET_VFs on each physical function. No"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_d781344c","line":1235,"range":{"start_line":1200,"start_character":0,"end_line":1235,"end_character":20},"in_reply_to":"9f91af0f_d4a6deab","updated":"2018-01-15 19:02:40.000000000","message":"Done","commit_id":"75105cca03555c3053e5c200c2df7b447667c535"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"0e177f3ae583dddd935377c2a0a0cdedefd4fcdc","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"        #                          uuids.numa_cell0, uuids.numa_cell1])"},{"line_number":1280,"context_line":"        # self.assertEqual(exp_provider_uuids,"},{"line_number":1281,"context_line":"        #    _provider_uuids_from_iterable(alloc_cands.provider_summaries))"},{"line_number":1282,"context_line":"        self.assertEqual(set([]),"},{"line_number":1283,"context_line":"            _provider_uuids_from_iterable(alloc_cands.provider_summaries))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9f91af0f_9452963a","line":1283,"range":{"start_line":1282,"start_character":0,"end_line":1283,"end_character":74},"updated":"2018-01-08 22:01:25.000000000","message":"You\u0027ll need to rebase and swap this out for _validate_provider_summary_resources once https://review.openstack.org/#/c/518982/ merges.  _provider_uuids_from_iterable goes away in that patch, but you won\u0027t get a merge conflict.","commit_id":"75105cca03555c3053e5c200c2df7b447667c535"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"fdfb051573ab9bfce8813047741bc2bb4e5d228e","unresolved":false,"context_lines":[{"line_number":1279,"context_line":"        #                          uuids.numa_cell0, uuids.numa_cell1])"},{"line_number":1280,"context_line":"        # self.assertEqual(exp_provider_uuids,"},{"line_number":1281,"context_line":"        #    _provider_uuids_from_iterable(alloc_cands.provider_summaries))"},{"line_number":1282,"context_line":"        self.assertEqual(set([]),"},{"line_number":1283,"context_line":"            _provider_uuids_from_iterable(alloc_cands.provider_summaries))"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f96bb07_88d07121","line":1283,"range":{"start_line":1282,"start_character":0,"end_line":1283,"end_character":74},"in_reply_to":"9f91af0f_9452963a","updated":"2018-01-15 17:13:35.000000000","message":"Done","commit_id":"75105cca03555c3053e5c200c2df7b447667c535"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a85ee3598e5c36db1e96067c66f03637a3fe5710","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        # _validate_allocation_requests to make failure results more readable."},{"line_number":67,"context_line":"        self.rp_uuid_to_name \u003d {}"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def _create_provider(self, name, *aggs, **kwargs):"},{"line_number":70,"context_line":"        parent \u003d kwargs.get(\u0027parent\u0027)"},{"line_number":71,"context_line":"        rp \u003d rp_obj.ResourceProvider(self.ctx, name\u003dname,"},{"line_number":72,"context_line":"                                     uuid\u003dgetattr(uuids, name))"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_ef1494a2","line":69,"range":{"start_line":69,"start_character":46,"end_line":69,"end_character":52},"updated":"2018-01-15 21:32:06.000000000","message":"noyce","commit_id":"dac73b9207eb47366490918cec99b6db63ab06b3"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"a85ee3598e5c36db1e96067c66f03637a3fe5710","unresolved":false,"context_lines":[{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"    def test_simple_tree_of_providers(self):"},{"line_number":1374,"context_line":"        \"\"\"Create a hierarchy of resource providers with various inventories"},{"line_number":1375,"context_line":"        and traits on the different levels of provider and see that allocation"},{"line_number":1376,"context_line":"        candidates return information on all relevant nodes in the tree."},{"line_number":1377,"context_line":"        \"\"\""},{"line_number":1378,"context_line":"        # We are setting up a tree of providers that looks like this:"}],"source_content_type":"text/x-python","patch_set":3,"id":"7f96bb07_cfed188c","line":1375,"range":{"start_line":1375,"start_character":8,"end_line":1375,"end_character":18},"updated":"2018-01-15 21:32:06.000000000","message":"This still isn\u0027t true.","commit_id":"dac73b9207eb47366490918cec99b6db63ab06b3"}]}
