)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a970bae599981e7a172355713e2f9adf3a4a4111","unresolved":false,"context_lines":[{"line_number":19,"context_line":"inventory."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"As compute node is the only resource provider for the vGPUs, in"},{"line_number":22,"context_line":"the resoure provider we can\u0027t determine which group the vGPUs belong"},{"line_number":23,"context_line":"to. So we will treat all vGPU as the same."},{"line_number":24,"context_line":"For example, if one compute node has two types of GPUs: e.g."},{"line_number":25,"context_line":"\"NVIDIA K1\" which can supply 4 vGPUs with the type of \"Grid K180Q\";"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_d2654eb0","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":11},"updated":"2017-11-07 15:09:00.000000000","message":"resource","commit_id":"35502815005839fa6745fe2923f7024b2409990e"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"0920288c73247b329285535e84b44541a72bdf47","unresolved":false,"context_lines":[{"line_number":19,"context_line":"inventory."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"As compute node is the only resource provider for the vGPUs, in"},{"line_number":22,"context_line":"the resoure provider we can\u0027t determine which group the vGPUs belong"},{"line_number":23,"context_line":"to. So we will treat all vGPU as the same."},{"line_number":24,"context_line":"For example, if one compute node has two types of GPUs: e.g."},{"line_number":25,"context_line":"\"NVIDIA K1\" which can supply 4 vGPUs with the type of \"Grid K180Q\";"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_a3a39b42","line":22,"range":{"start_line":22,"start_character":4,"end_line":22,"end_character":11},"in_reply_to":"3f4b6375_d2654eb0","updated":"2017-11-08 07:21:05.000000000","message":"Done","commit_id":"35502815005839fa6745fe2923f7024b2409990e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"a970bae599981e7a172355713e2f9adf3a4a4111","unresolved":false,"context_lines":[{"line_number":27,"context_line":"the type of \"Intel GVT-g\". The total amount of the resource class"},{"line_number":28,"context_line":"of \"VGPU\" in the inventory is 4 + 7 \u003d 11."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Once we switch to use nested resource providers, we can create"},{"line_number":31,"context_line":"inventory under different child resource providers for each"},{"line_number":32,"context_line":"GPU group. Then we can schedule resource providers basing on"},{"line_number":33,"context_line":"traits."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Change-Id: Iba4fcb82dd18e8c1f22d0ce3358078c5263c77dc"},{"line_number":36,"context_line":"blueprint: add-support-for-vgpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"3f4b6375_72257a5b","line":33,"range":{"start_line":30,"start_character":0,"end_line":33,"end_character":7},"updated":"2017-11-07 15:09:00.000000000","message":"ack.","commit_id":"35502815005839fa6745fe2923f7024b2409990e"}],"nova/tests/unit/virt/xenapi/test_driver.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7e59de4ef75841401a4584759aed319b5c858ccb","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch.object(host.HostState, \u0027get_host_stats\u0027)"},{"line_number":291,"context_line":"    def test_get_inventory_no_vgpu(self, mock_get_stats):"},{"line_number":292,"context_line":"        # Test when there are vGPU resources in the inventory."},{"line_number":293,"context_line":"        host_stats \u003d self.host_stats()"},{"line_number":294,"context_line":"        host_stats.update(vgpu_stats\u003d{})"},{"line_number":295,"context_line":"        mock_get_stats.return_value \u003d host_stats"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_4b459042","line":292,"range":{"start_line":292,"start_character":26,"end_line":292,"end_character":34},"updated":"2017-11-15 19:56:13.000000000","message":"are *no* vGPU :)","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bcc52e2820c6d3d73661cc9c089eb95da9752975","unresolved":false,"context_lines":[{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @mock.patch.object(host.HostState, \u0027get_host_stats\u0027)"},{"line_number":291,"context_line":"    def test_get_inventory_no_vgpu(self, mock_get_stats):"},{"line_number":292,"context_line":"        # Test when there are vGPU resources in the inventory."},{"line_number":293,"context_line":"        host_stats \u003d self.host_stats()"},{"line_number":294,"context_line":"        host_stats.update(vgpu_stats\u003d{})"},{"line_number":295,"context_line":"        mock_get_stats.return_value \u003d host_stats"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_bac7a396","line":292,"range":{"start_line":292,"start_character":26,"end_line":292,"end_character":34},"in_reply_to":"1f485f77_4b459042","updated":"2017-11-16 03:40:44.000000000","message":"Done","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7e59de4ef75841401a4584759aed319b5c858ccb","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        drv \u003d self._get_driver()"},{"line_number":298,"context_line":"        inv \u003d drv.get_inventory(mock.sentinel.nodename)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        vgpu_class \u003d obj_fields.ResourceClass.VGPU"},{"line_number":301,"context_line":"        # check if the inventory data does NOT contain VGPU."},{"line_number":302,"context_line":"        self.assertTrue(vgpu_class not in inv.keys())"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def test_get_vgpu_total_single_grp(self):"},{"line_number":305,"context_line":"        # Test when only one group included in the host_stats."}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_2b9db4bb","line":302,"range":{"start_line":300,"start_character":8,"end_line":302,"end_character":53},"updated":"2017-11-15 19:56:13.000000000","message":"Note that this could be written like so:\n\n self.assertNotIn(obj_fields.ResourceClass.VGPU, inv)","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bcc52e2820c6d3d73661cc9c089eb95da9752975","unresolved":false,"context_lines":[{"line_number":297,"context_line":"        drv \u003d self._get_driver()"},{"line_number":298,"context_line":"        inv \u003d drv.get_inventory(mock.sentinel.nodename)"},{"line_number":299,"context_line":""},{"line_number":300,"context_line":"        vgpu_class \u003d obj_fields.ResourceClass.VGPU"},{"line_number":301,"context_line":"        # check if the inventory data does NOT contain VGPU."},{"line_number":302,"context_line":"        self.assertTrue(vgpu_class not in inv.keys())"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    def test_get_vgpu_total_single_grp(self):"},{"line_number":305,"context_line":"        # Test when only one group included in the host_stats."}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_3a3973a3","line":302,"range":{"start_line":300,"start_character":8,"end_line":302,"end_character":53},"in_reply_to":"1f485f77_2b9db4bb","updated":"2017-11-16 03:40:44.000000000","message":"Yes, thanks for pointing it out:-)","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7e59de4ef75841401a4584759aed319b5c858ccb","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        self.assertEqual(7, vgpu_total)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def test_get_vgpu_total_multple_grps(self):"},{"line_number":318,"context_line":"        # Test when multiple groups included in the host_stats."},{"line_number":319,"context_line":"        vgpu_stats \u003d {"},{"line_number":320,"context_line":"            \u0027grp_uuid_1\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_abb08444","line":317,"range":{"start_line":317,"start_character":28,"end_line":317,"end_character":35},"updated":"2017-11-15 19:56:13.000000000","message":"multiple","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bcc52e2820c6d3d73661cc9c089eb95da9752975","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        self.assertEqual(7, vgpu_total)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    def test_get_vgpu_total_multple_grps(self):"},{"line_number":318,"context_line":"        # Test when multiple groups included in the host_stats."},{"line_number":319,"context_line":"        vgpu_stats \u003d {"},{"line_number":320,"context_line":"            \u0027grp_uuid_1\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_1a3eb78b","line":317,"range":{"start_line":317,"start_character":28,"end_line":317,"end_character":35},"in_reply_to":"1f485f77_abb08444","updated":"2017-11-16 03:40:44.000000000","message":"Done","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"}],"nova/virt/xenapi/driver.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"6b004eee1fb8fc0c0e0367af8d7bce9542a1514c","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                {"},{"line_number":459,"context_line":"                    fields.ResourceClass.VGPU: {"},{"line_number":460,"context_line":"                        \u0027total\u0027: vgpus,"},{"line_number":461,"context_line":"                        \u0027min_unit\u0027: 1,"},{"line_number":462,"context_line":"                        \u0027max_unit\u0027: 1,"},{"line_number":463,"context_line":"                        \u0027step_size\u0027: 1,"},{"line_number":464,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_e5b7e685","line":461,"updated":"2017-11-01 16:34:25.000000000","message":"Why is min_unit 1?  I would have thought min_unit should be 0?","commit_id":"4ebc6134dfeadb213506a04c17da391dab43366c"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"c7f6dcd95bda122335a6b0b6643bb34f9dd6b79e","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                {"},{"line_number":459,"context_line":"                    fields.ResourceClass.VGPU: {"},{"line_number":460,"context_line":"                        \u0027total\u0027: vgpus,"},{"line_number":461,"context_line":"                        \u0027min_unit\u0027: 1,"},{"line_number":462,"context_line":"                        \u0027max_unit\u0027: 1,"},{"line_number":463,"context_line":"                        \u0027step_size\u0027: 1,"},{"line_number":464,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_a6af9828","line":461,"in_reply_to":"3f4b6375_4615849b","updated":"2017-11-02 14:00:58.000000000","message":"Fair enough.  Indeed as the request would only be created if the min_unit was \u003e\u003d1 then I think either 0 or 1 would work - but I\u0027m happy to keep as 1.","commit_id":"4ebc6134dfeadb213506a04c17da391dab43366c"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"11b1b864a15179e34e5d76291be862858fcb726f","unresolved":false,"context_lines":[{"line_number":458,"context_line":"                {"},{"line_number":459,"context_line":"                    fields.ResourceClass.VGPU: {"},{"line_number":460,"context_line":"                        \u0027total\u0027: vgpus,"},{"line_number":461,"context_line":"                        \u0027min_unit\u0027: 1,"},{"line_number":462,"context_line":"                        \u0027max_unit\u0027: 1,"},{"line_number":463,"context_line":"                        \u0027step_size\u0027: 1,"},{"line_number":464,"context_line":"                    }"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f4b6375_4615849b","line":461,"in_reply_to":"3f4b6375_e5b7e685","updated":"2017-11-02 13:54:58.000000000","message":"The min_unit and max_unit is the limits on the amount when really request the resource. If 0, then no request on this resource.\n\nRefer to https://specs.openstack.org/openstack/nova-specs/specs/newton/implemented/resource-providers.html\n\nI think 1 is correct.","commit_id":"4ebc6134dfeadb213506a04c17da391dab43366c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"7e59de4ef75841401a4584759aed319b5c858ccb","unresolved":false,"context_lines":[{"line_number":405,"context_line":"                \u0027password\u0027: CONF.xenserver.connection_password}"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def _get_vgpu_total(self, vgpu_stats):"},{"line_number":408,"context_line":"        # NOTE(jianghuaw): For the moment, the vGPU inventory is associated to"},{"line_number":409,"context_line":"        # compute node. Before we switch to use the nested resource provider,"},{"line_number":410,"context_line":"        # we cannot distinguish the vGPUs in different GPU group - each group"},{"line_number":411,"context_line":"        # presents a type of physical GPU (e.g. \"Nvidia K1\", \u0027Intel Iris Pro"},{"line_number":412,"context_line":"        # Graphics P6300\" etc), as the traits which can be used to distinguish"},{"line_number":413,"context_line":"        # them cannot be associated to inventory but can only be associated"},{"line_number":414,"context_line":"        # to the resource provider. So we treat all vGPUs as just the same."},{"line_number":415,"context_line":"        # The total amount of the vGPU resources in the inventory is the sum"},{"line_number":416,"context_line":"        # of the amount in all GPU groups."},{"line_number":417,"context_line":"        total \u003d 0"},{"line_number":418,"context_line":"        for grp_id in vgpu_stats:"},{"line_number":419,"context_line":"            total +\u003d vgpu_stats[grp_id][\u0027total\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1f485f77_2b86d467","line":416,"range":{"start_line":408,"start_character":8,"end_line":416,"end_character":42},"updated":"2017-11-15 19:56:13.000000000","message":"ack. good comment.","commit_id":"780706e96e2775f52b63c7453bbfa793880589bf"}]}
