)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"d432067f7a794c619563040b9d54175340e945b7","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understand by XenAPI. Then create"},{"line_number":12,"context_line":"a vGPU for the instance."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: add-support-for-vgpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3f4b6375_ff54c3ff","line":11,"range":{"start_line":11,"start_character":23,"end_line":11,"end_character":33},"updated":"2017-11-04 14:16:48.000000000","message":"understood:-(","commit_id":"a7434ffbc986ede01f0253df844beecf707a6242"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"fb51b7250bb0262840dfc967db5f782907c78c33","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: add-support-for-vgpu"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f485f77_864f3591","line":12,"updated":"2017-11-14 09:09:04.000000000","message":"There seems to be no mention of the \"remaining\" item added in the commit.\nWas that needed for this change, or should the remaining field have been added in a previous change?","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dc3d9188e961be716c0856fb31588d5a26f18cd7","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"blueprint: add-support-for-vgpu"},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f485f77_fce1d6fd","line":12,"in_reply_to":"1f485f77_864f3591","updated":"2017-11-14 11:17:31.000000000","message":"The remaining item is not added in the previous change as that\u0027s needed only when booting instance. Will add it in commit message.","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1d14f61a667c0ee5e02c5b1a1c04829ad61f164","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XenAPI: create vGPU for instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f485f77_efac28ee","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":23},"updated":"2017-11-17 17:51:27.000000000","message":"parses","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"XenAPI: create vGPU for instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"ff82abbf_c531ecee","line":9,"range":{"start_line":9,"start_character":12,"end_line":9,"end_character":23},"in_reply_to":"1f485f77_efac28ee","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1d14f61a667c0ee5e02c5b1a1c04829ad61f164","unresolved":false,"context_lines":[{"line_number":7,"context_line":"XenAPI: create vGPU for instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":"Before booting instance with vGPU, it needs check if the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f485f77_afb2b047","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":25},"updated":"2017-11-17 17:51:27.000000000","message":"maps","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":7,"context_line":"XenAPI: create vGPU for instance"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":"Before booting instance with vGPU, it needs check if the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"ff82abbf_654ca076","line":10,"range":{"start_line":10,"start_character":22,"end_line":10,"end_character":25},"in_reply_to":"1f485f77_afb2b047","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1d14f61a667c0ee5e02c5b1a1c04829ad61f164","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":"Before booting instance with vGPU, it needs check if the"},{"line_number":14,"context_line":"GPU group has remaining vGPUs available. So also update the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f485f77_8f85b45c","line":11,"range":{"start_line":11,"start_character":50,"end_line":11,"end_character":56},"updated":"2017-11-17 17:51:27.000000000","message":"creates","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This commit is to parse the allocation to check if VGPU"},{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":"Before booting instance with vGPU, it needs check if the"},{"line_number":14,"context_line":"GPU group has remaining vGPUs available. So also update the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"ff82abbf_a562a8d7","line":11,"range":{"start_line":11,"start_character":50,"end_line":11,"end_character":56},"in_reply_to":"1f485f77_8f85b45c","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1d14f61a667c0ee5e02c5b1a1c04829ad61f164","unresolved":false,"context_lines":[{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":"Before booting instance with vGPU, it needs check if the"},{"line_number":14,"context_line":"GPU group has remaining vGPUs available. So also update the"},{"line_number":15,"context_line":"function of _get_vgpu_stats_in_group() to report remaining"},{"line_number":16,"context_line":"vGPU capacity."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f485f77_6f8a786a","line":13,"range":{"start_line":13,"start_character":44,"end_line":13,"end_character":49},"updated":"2017-11-17 17:51:27.000000000","message":"to check","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":10,"context_line":"is allocated. If yes, map the allocation to GPU group and"},{"line_number":11,"context_line":"vGPU type which can be understood by XenAPI. Then create"},{"line_number":12,"context_line":"the vGPU for the instance."},{"line_number":13,"context_line":"Before booting instance with vGPU, it needs check if the"},{"line_number":14,"context_line":"GPU group has remaining vGPUs available. So also update the"},{"line_number":15,"context_line":"function of _get_vgpu_stats_in_group() to report remaining"},{"line_number":16,"context_line":"vGPU capacity."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"ff82abbf_c55fac0c","line":13,"range":{"start_line":13,"start_character":44,"end_line":13,"end_character":49},"in_reply_to":"1f485f77_6f8a786a","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1d14f61a667c0ee5e02c5b1a1c04829ad61f164","unresolved":false,"context_lines":[{"line_number":14,"context_line":"GPU group has remaining vGPUs available. So also update the"},{"line_number":15,"context_line":"function of _get_vgpu_stats_in_group() to report remaining"},{"line_number":16,"context_line":"vGPU capacity."},{"line_number":17,"context_line":"As we can use vGPU feature since this commit, it also include"},{"line_number":18,"context_line":"a release note."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"blueprint: add-support-for-vgpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"1f485f77_f343d340","line":17,"range":{"start_line":17,"start_character":54,"end_line":17,"end_character":61},"updated":"2017-11-17 17:51:27.000000000","message":"includes","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":14,"context_line":"GPU group has remaining vGPUs available. So also update the"},{"line_number":15,"context_line":"function of _get_vgpu_stats_in_group() to report remaining"},{"line_number":16,"context_line":"vGPU capacity."},{"line_number":17,"context_line":"As we can use vGPU feature since this commit, it also include"},{"line_number":18,"context_line":"a release note."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"blueprint: add-support-for-vgpu"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"ff82abbf_659a60c6","line":17,"range":{"start_line":17,"start_character":54,"end_line":17,"end_character":61},"in_reply_to":"1f485f77_f343d340","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"}],"nova/tests/unit/virt/xenapi/test_driver.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"fb51b7250bb0262840dfc967db5f782907c78c33","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"            }"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"        # If one GPU group has no remaining available vGPUs;"},{"line_number":367,"context_line":"        # the 2nd GPU group still has remainig available vGPUs."},{"line_number":368,"context_line":"        # it should return the uuid from the 2nd GPU group."},{"line_number":369,"context_line":"        vgpu_stats \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_0620e5af","line":366,"updated":"2017-11-14 09:09:04.000000000","message":"This seems a strange test here - we would not expect a host with mixed Intel / NVIDIA gpus enabled.\nSurely this should have two groups with different GRID types exposed?","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"f3c3cfbba0b7ddc0d8c2d1a95fd3e923519a2114","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"            }"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"        # If one GPU group has no remaining available vGPUs;"},{"line_number":367,"context_line":"        # the 2nd GPU group still has remainig available vGPUs."},{"line_number":368,"context_line":"        # it should return the uuid from the 2nd GPU group."},{"line_number":369,"context_line":"        vgpu_stats \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff82abbf_1c8e3478","line":366,"in_reply_to":"1f485f77_0620e5af","updated":"2017-11-22 07:05:48.000000000","message":"At the moment, we only restrict the enabled vGPU types to ensure each GPU group","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dc3d9188e961be716c0856fb31588d5a26f18cd7","unresolved":false,"context_lines":[{"line_number":363,"context_line":"                }"},{"line_number":364,"context_line":"            }"},{"line_number":365,"context_line":"        }"},{"line_number":366,"context_line":"        # If one GPU group has no remaining available vGPUs;"},{"line_number":367,"context_line":"        # the 2nd GPU group still has remainig available vGPUs."},{"line_number":368,"context_line":"        # it should return the uuid from the 2nd GPU group."},{"line_number":369,"context_line":"        vgpu_stats \u003d {"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_5fea1c75","line":366,"in_reply_to":"1f485f77_0620e5af","updated":"2017-11-14 11:17:31.000000000","message":"There are scenarios that we have multiple PGPUs enabled in a host.\n\nIn the spec, we only restrict the enabled_vgpu_types to ensure each GPU group has only one VGPU type enabled. So only exposes one type per group but allowing multiple groups.\n\nAs the nested resource provider is not ready at the moment, we are attaching vgpu resource in compute_node. And we treat all VGPUs just as the same. But I think we can still do thing in parallel for vGPU to support n-rp. So I\u0027d keep the code assuming multiple GPU groups are allowed.\n\nBut surely we can add the limitation in the release note. Another solution from coding side is to add a separate checking at the beginning to ensure only one type is picked up from the option.","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"64b059c9ff0d3b1ebeb566243c29f650d1ee4a5a","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        self.assertEqual(expected_info, vgpu_info)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    @mock.patch.object(host.HostState, \u0027get_host_stats\u0027)"},{"line_number":397,"context_line":"    def test_get_vgpu_info_has_vgpu_alloc_except(self, mock_get_stats):"},{"line_number":398,"context_line":"        # exception as on vGPU resource available."},{"line_number":399,"context_line":"        alloc \u003d {"},{"line_number":400,"context_line":"            \u0027rp1\u0027: {"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_f35a5328","line":397,"range":{"start_line":397,"start_character":27,"end_line":397,"end_character":41},"updated":"2017-11-23 08:37:00.000000000","message":"has_no_vgpu_alloc?","commit_id":"09d58362fd8f784b10f664eb487694e62c0fc9ea"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ff6b595afaecf3324e97396b83525cc2ca2fc107","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        self.assertEqual(expected_info, vgpu_info)"},{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    @mock.patch.object(host.HostState, \u0027get_host_stats\u0027)"},{"line_number":397,"context_line":"    def test_get_vgpu_info_has_vgpu_alloc_except(self, mock_get_stats):"},{"line_number":398,"context_line":"        # exception as on vGPU resource available."},{"line_number":399,"context_line":"        alloc \u003d {"},{"line_number":400,"context_line":"            \u0027rp1\u0027: {"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_1309ecdb","line":397,"range":{"start_line":397,"start_character":27,"end_line":397,"end_character":41},"in_reply_to":"ff82abbf_f35a5328","updated":"2017-11-23 16:19:36.000000000","message":"no. I do mean it has vGPU allocation but there is booting exception due to no vGPU resource available.","commit_id":"09d58362fd8f784b10f664eb487694e62c0fc9ea"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"64b059c9ff0d3b1ebeb566243c29f650d1ee4a5a","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    @mock.patch.object(host.HostState, \u0027get_host_stats\u0027)"},{"line_number":397,"context_line":"    def test_get_vgpu_info_has_vgpu_alloc_except(self, mock_get_stats):"},{"line_number":398,"context_line":"        # exception as on vGPU resource available."},{"line_number":399,"context_line":"        alloc \u003d {"},{"line_number":400,"context_line":"            \u0027rp1\u0027: {"},{"line_number":401,"context_line":"                \u0027resources\u0027: {"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_53369fe8","line":398,"range":{"start_line":398,"start_character":23,"end_line":398,"end_character":25},"updated":"2017-11-23 08:37:00.000000000","message":"no","commit_id":"09d58362fd8f784b10f664eb487694e62c0fc9ea"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ff6b595afaecf3324e97396b83525cc2ca2fc107","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"    @mock.patch.object(host.HostState, \u0027get_host_stats\u0027)"},{"line_number":397,"context_line":"    def test_get_vgpu_info_has_vgpu_alloc_except(self, mock_get_stats):"},{"line_number":398,"context_line":"        # exception as on vGPU resource available."},{"line_number":399,"context_line":"        alloc \u003d {"},{"line_number":400,"context_line":"            \u0027rp1\u0027: {"},{"line_number":401,"context_line":"                \u0027resources\u0027: {"}],"source_content_type":"text/x-python","patch_set":26,"id":"ff82abbf_d312a409","line":398,"range":{"start_line":398,"start_character":23,"end_line":398,"end_character":25},"in_reply_to":"ff82abbf_53369fe8","updated":"2017-11-23 16:19:36.000000000","message":"agreed. thanks.","commit_id":"09d58362fd8f784b10f664eb487694e62c0fc9ea"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ee0406f10b5d984cfc6e3104981b217281af6285","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                    \u0027VCPU\u0027: 1,"},{"line_number":398,"context_line":"                    \u0027MEMORY_MB\u0027: 512,"},{"line_number":399,"context_line":"                    \u0027DISK_GB\u0027: 1,"},{"line_number":400,"context_line":"                    \u0027VGPU\u0027: 1,"},{"line_number":401,"context_line":"                }"},{"line_number":402,"context_line":"            }"},{"line_number":403,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_ac5b0152","line":400,"updated":"2017-12-06 16:05:22.000000000","message":"here, I\u0027d love to see us testing more than one allocated VGPU.","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bd69623196637de04503348e66120e3d8dd254cb","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                    \u0027VCPU\u0027: 1,"},{"line_number":398,"context_line":"                    \u0027MEMORY_MB\u0027: 512,"},{"line_number":399,"context_line":"                    \u0027DISK_GB\u0027: 1,"},{"line_number":400,"context_line":"                    \u0027VGPU\u0027: 1,"},{"line_number":401,"context_line":"                }"},{"line_number":402,"context_line":"            }"},{"line_number":403,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_20d8441c","line":400,"in_reply_to":"df87a7cf_ac5b0152","updated":"2017-12-07 06:48:19.000000000","message":"There shouldn\u0027t have chance to having \u003e1 VGPUs allocated. As we set max_unit \u003d 1 in inventory data. If request \u003e1 vGPUs, scheduling should fail. So either no VGPU or at most 1 VGPU allocated. Thanks.","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        # The following fake data assumes there are two GPU"},{"line_number":359,"context_line":"        # groups both of which supply the same type of vGPUs."},{"line_number":360,"context_line":"        # If the 1st GPU group has no remaining available vGPUs;"},{"line_number":361,"context_line":"        # the 2nd GPU group still has remainig available vGPUs."},{"line_number":362,"context_line":"        # it should return the uuid from the 2nd GPU group."},{"line_number":363,"context_line":"        vgpu_stats \u003d {"},{"line_number":364,"context_line":"            \u0027grp_uuid_1\u0027: {"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_49a4be08","line":361,"range":{"start_line":361,"start_character":38,"end_line":361,"end_character":46},"updated":"2017-12-15 18:34:25.000000000","message":"remaining","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":361,"context_line":"        # the 2nd GPU group still has remainig available vGPUs."},{"line_number":362,"context_line":"        # it should return the uuid from the 2nd GPU group."},{"line_number":363,"context_line":"        vgpu_stats \u003d {"},{"line_number":364,"context_line":"            \u0027grp_uuid_1\u0027: {"},{"line_number":365,"context_line":"                \u0027uuid\u0027: \u0027type_uuid\u0027,"},{"line_number":366,"context_line":"                \u0027type_name\u0027: \u0027GRID K180Q\u0027,"},{"line_number":367,"context_line":"                \u0027max_heads\u0027: 4,"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_e9b27249","line":364,"range":{"start_line":364,"start_character":13,"end_line":364,"end_character":23},"updated":"2017-12-15 18:34:25.000000000","message":"recommend changing to uuidsentinel.gpu_group_1","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        # it should return the uuid from the 2nd GPU group."},{"line_number":363,"context_line":"        vgpu_stats \u003d {"},{"line_number":364,"context_line":"            \u0027grp_uuid_1\u0027: {"},{"line_number":365,"context_line":"                \u0027uuid\u0027: \u0027type_uuid\u0027,"},{"line_number":366,"context_line":"                \u0027type_name\u0027: \u0027GRID K180Q\u0027,"},{"line_number":367,"context_line":"                \u0027max_heads\u0027: 4,"},{"line_number":368,"context_line":"                \u0027total\u0027: 2,"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_29a93adc","line":365,"range":{"start_line":365,"start_character":25,"end_line":365,"end_character":34},"updated":"2017-12-15 18:34:25.000000000","message":"recommend changing this to uuidsentinel.gpu_type to better reflect the fact it should be a UUID","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"}],"nova/tests/unit/virt/xenapi/test_vmops.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":511,"context_line":""},{"line_number":512,"context_line":"    def test_spawn_with_vgpu(self):"},{"line_number":513,"context_line":"        vgpu_info \u003d {\u0027grp_uuid\u0027: \u0027grp_uuid_1\u0027,"},{"line_number":514,"context_line":"                     \u0027vgpu_type_uuid\u0027: \u0027type_uuid_1\u0027}"},{"line_number":515,"context_line":"        self._test_spawn(vgpu_info\u003dvgpu_info)"},{"line_number":516,"context_line":""},{"line_number":517,"context_line":"    def test_spawn_performs_rollback_and_throws_exception(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_a9eb0a10","line":514,"range":{"start_line":514,"start_character":22,"end_line":514,"end_character":36},"updated":"2017-12-15 18:34:25.000000000","message":"same comment about using real UUIDs with the uuidsentinel module...","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"}],"nova/virt/xenapi/driver.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"fb51b7250bb0262840dfc967db5f782907c78c33","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    def _get_vgpu_info(self, allocations):"},{"line_number":183,"context_line":"        \"\"\"Get vGPU info if any vGPU is allocated.\"\"\""},{"line_number":184,"context_line":"        if not self._is_vgpu_allocated(allocations):"},{"line_number":185,"context_line":"            return"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # NOTE(jianghuaw): At the moment, we associate all vGPUs resource to"},{"line_number":188,"context_line":"        # the compute node regardless which GPU group the vGPUs belong to, so"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_e6ab891a","line":185,"range":{"start_line":185,"start_character":12,"end_line":185,"end_character":18},"updated":"2017-11-14 09:09:04.000000000","message":"I\u0027d rather be explicit here:\nreturn None","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dc3d9188e961be716c0856fb31588d5a26f18cd7","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    def _get_vgpu_info(self, allocations):"},{"line_number":183,"context_line":"        \"\"\"Get vGPU info if any vGPU is allocated.\"\"\""},{"line_number":184,"context_line":"        if not self._is_vgpu_allocated(allocations):"},{"line_number":185,"context_line":"            return"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        # NOTE(jianghuaw): At the moment, we associate all vGPUs resource to"},{"line_number":188,"context_line":"        # the compute node regardless which GPU group the vGPUs belong to, so"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_bc291e9c","line":185,"range":{"start_line":185,"start_character":12,"end_line":185,"end_character":18},"in_reply_to":"1f485f77_e6ab891a","updated":"2017-11-14 11:17:31.000000000","message":"Agreed.","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"fb51b7250bb0262840dfc967db5f782907c78c33","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                return dict(gpu_grp_uuid\u003dgrp_uuid,"},{"line_number":201,"context_line":"                            vgpu_type_uuid\u003dvgpu_stats[grp_uuid][\u0027uuid\u0027])"},{"line_number":202,"context_line":"        # No remaining vGPU available: e.g. the vGPU resource has been used by"},{"line_number":203,"context_line":"        # other instance or the vGPU has been change to be disabled."},{"line_number":204,"context_line":"        raise exception.ComputeResourcesUnavailable("},{"line_number":205,"context_line":"            reason\u003d\u0027vGPU resource is not available\u0027)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_86661529","line":203,"range":{"start_line":203,"start_character":46,"end_line":203,"end_character":52},"updated":"2017-11-14 09:09:04.000000000","message":"nit: changed","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dc3d9188e961be716c0856fb31588d5a26f18cd7","unresolved":false,"context_lines":[{"line_number":200,"context_line":"                return dict(gpu_grp_uuid\u003dgrp_uuid,"},{"line_number":201,"context_line":"                            vgpu_type_uuid\u003dvgpu_stats[grp_uuid][\u0027uuid\u0027])"},{"line_number":202,"context_line":"        # No remaining vGPU available: e.g. the vGPU resource has been used by"},{"line_number":203,"context_line":"        # other instance or the vGPU has been change to be disabled."},{"line_number":204,"context_line":"        raise exception.ComputeResourcesUnavailable("},{"line_number":205,"context_line":"            reason\u003d\u0027vGPU resource is not available\u0027)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_7c1de671","line":203,"range":{"start_line":203,"start_character":46,"end_line":203,"end_character":52},"in_reply_to":"1f485f77_86661529","updated":"2017-11-14 11:17:31.000000000","message":"agreed.","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"6a904cf02e21904ccfd60a20befd88d2aac3fa63","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            return False"},{"line_number":176,"context_line":"        for rp in allocations:"},{"line_number":177,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":178,"context_line":"            if res and \u0027VGPU\u0027 in res and res[\u0027VGPU\u0027] \u003e 0:"},{"line_number":179,"context_line":"                return True"},{"line_number":180,"context_line":"        return False"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_092c5f00","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":29},"updated":"2017-12-06 15:19:46.000000000","message":"please, don\u0027t use the direct string, but rather verify  fields.ResourceClass.VGPU","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bd69623196637de04503348e66120e3d8dd254cb","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            return False"},{"line_number":176,"context_line":"        for rp in allocations:"},{"line_number":177,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":178,"context_line":"            if res and \u0027VGPU\u0027 in res and res[\u0027VGPU\u0027] \u003e 0:"},{"line_number":179,"context_line":"                return True"},{"line_number":180,"context_line":"        return False"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_209cc468","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":29},"in_reply_to":"df87a7cf_092c5f00","updated":"2017-12-07 06:48:19.000000000","message":"Yes, should use fields.ResourceClass.VGPU. thanks.","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"622de8a47e9f722afd4c4c7b8449679aebd98514","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            return False"},{"line_number":176,"context_line":"        for rp in allocations:"},{"line_number":177,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":178,"context_line":"            if res and \u0027VGPU\u0027 in res and res[\u0027VGPU\u0027] \u003e 0:"},{"line_number":179,"context_line":"                return True"},{"line_number":180,"context_line":"        return False"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_c96d1705","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":29},"in_reply_to":"df87a7cf_092c5f00","updated":"2017-12-06 15:26:40.000000000","message":"also, no need to continue to loop over the other allocations if we already verified the existing VGPU RC.","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bd69623196637de04503348e66120e3d8dd254cb","unresolved":false,"context_lines":[{"line_number":175,"context_line":"            return False"},{"line_number":176,"context_line":"        for rp in allocations:"},{"line_number":177,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":178,"context_line":"            if res and \u0027VGPU\u0027 in res and res[\u0027VGPU\u0027] \u003e 0:"},{"line_number":179,"context_line":"                return True"},{"line_number":180,"context_line":"        return False"},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_e0901c46","line":178,"range":{"start_line":178,"start_character":23,"end_line":178,"end_character":29},"in_reply_to":"df87a7cf_c96d1705","updated":"2017-12-07 06:48:19.000000000","message":"It won\u0027t continue the loop but return directly once confirmed VGPU RC exists:-)","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"ee0406f10b5d984cfc6e3104981b217281af6285","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        for grp_uuid in vgpu_stats:"},{"line_number":199,"context_line":"            if vgpu_stats[grp_uuid][\u0027remaining\u0027] \u003e 0:"},{"line_number":200,"context_line":"                return dict(gpu_grp_uuid\u003dgrp_uuid,"},{"line_number":201,"context_line":"                            vgpu_type_uuid\u003dvgpu_stats[grp_uuid][\u0027uuid\u0027])"},{"line_number":202,"context_line":"        # No remaining vGPU available: e.g. the vGPU resource has been used by"},{"line_number":203,"context_line":"        # other instance or the vGPU has been changed to be disabled."},{"line_number":204,"context_line":"        raise exception.ComputeResourcesUnavailable("}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_cc46857d","line":201,"updated":"2017-12-06 16:05:22.000000000","message":"How can you pass how many allocations are made if VGPU\u003e1 ?\nHere, looks like you only create one VGPU, right?","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"bd69623196637de04503348e66120e3d8dd254cb","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        for grp_uuid in vgpu_stats:"},{"line_number":199,"context_line":"            if vgpu_stats[grp_uuid][\u0027remaining\u0027] \u003e 0:"},{"line_number":200,"context_line":"                return dict(gpu_grp_uuid\u003dgrp_uuid,"},{"line_number":201,"context_line":"                            vgpu_type_uuid\u003dvgpu_stats[grp_uuid][\u0027uuid\u0027])"},{"line_number":202,"context_line":"        # No remaining vGPU available: e.g. the vGPU resource has been used by"},{"line_number":203,"context_line":"        # other instance or the vGPU has been changed to be disabled."},{"line_number":204,"context_line":"        raise exception.ComputeResourcesUnavailable("}],"source_content_type":"text/x-python","patch_set":30,"id":"df87a7cf_00bf40b0","line":201,"in_reply_to":"df87a7cf_cc46857d","updated":"2017-12-07 06:48:19.000000000","message":"XenServer only supports one VGPU per VM. That\u0027s why I set max_unit as 1 when generate inventory data for VGPU in https://review.openstack.org/#/c/516217/24/nova/virt/xenapi/driver.py@457.","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                return True"},{"line_number":181,"context_line":"        return False"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _get_vgpu_info(self, allocations):"},{"line_number":184,"context_line":"        \"\"\"Get vGPU info if any vGPU is allocated.\"\"\""},{"line_number":185,"context_line":"        if not self._is_vgpu_allocated(allocations):"},{"line_number":186,"context_line":"            return None"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_09c5568e","line":183,"updated":"2017-12-15 18:34:25.000000000","message":"it would be useful to docstring this method, especially to document the format of the allocations parameter.","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        # NOTE(jianghuaw): At the moment, we associate all vGPUs resource to"},{"line_number":189,"context_line":"        # the compute node regardless which GPU group the vGPUs belong to, so"},{"line_number":190,"context_line":"        # we need search all GPU groups until we got one group which has"},{"line_number":191,"context_line":"        # remaining capacity to supply one vGPU. Once we switched to the"},{"line_number":192,"context_line":"        # nested resource providers, the allocations will contain the resource"},{"line_number":193,"context_line":"        # provider which represents a particular GPU group. It\u0027s able to get"},{"line_number":194,"context_line":"        # the GPU group and vGPU type directly by using the resource provider\u0027s"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_6943c214","line":191,"range":{"start_line":191,"start_character":57,"end_line":191,"end_character":65},"updated":"2017-12-15 18:34:25.000000000","message":"switch","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        # the compute node regardless which GPU group the vGPUs belong to, so"},{"line_number":190,"context_line":"        # we need search all GPU groups until we got one group which has"},{"line_number":191,"context_line":"        # remaining capacity to supply one vGPU. Once we switched to the"},{"line_number":192,"context_line":"        # nested resource providers, the allocations will contain the resource"},{"line_number":193,"context_line":"        # provider which represents a particular GPU group. It\u0027s able to get"},{"line_number":194,"context_line":"        # the GPU group and vGPU type directly by using the resource provider\u0027s"},{"line_number":195,"context_line":"        # uuid. Then we can consider moving this function to vmops, as there is"},{"line_number":196,"context_line":"        # no need to querying host stats to get all GPU groups."}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_094a3626","line":193,"range":{"start_line":192,"start_character":37,"end_line":193,"end_character":59},"updated":"2017-12-15 18:34:25.000000000","message":"exactly. ++","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        # provider which represents a particular GPU group. It\u0027s able to get"},{"line_number":194,"context_line":"        # the GPU group and vGPU type directly by using the resource provider\u0027s"},{"line_number":195,"context_line":"        # uuid. Then we can consider moving this function to vmops, as there is"},{"line_number":196,"context_line":"        # no need to querying host stats to get all GPU groups."},{"line_number":197,"context_line":"        host_stats \u003d self.host_state.get_host_stats(refresh\u003dTrue)"},{"line_number":198,"context_line":"        vgpu_stats \u003d host_stats[\u0027vgpu_stats\u0027]"},{"line_number":199,"context_line":"        for grp_uuid in vgpu_stats:"}],"source_content_type":"text/x-python","patch_set":33,"id":"df87a7cf_a9622aac","line":196,"range":{"start_line":196,"start_character":21,"end_line":196,"end_character":29},"updated":"2017-12-15 18:34:25.000000000","message":"query","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"98cef0b05e5a73215a1a5f4cfe17263e37a5fa97","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        RC_VGPU \u003d fields.ResourceClass.VGPU"},{"line_number":177,"context_line":"        for rp in allocations:"},{"line_number":178,"context_line":"            res \u003d allocations[rp][\u0027resources\u0027]"},{"line_number":179,"context_line":"            if res and RC_VGPU in res and res[RC_VGPU] \u003e 0:"},{"line_number":180,"context_line":"                return True"},{"line_number":181,"context_line":"        return False"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"bf8cb3f7_432638ba","line":179,"range":{"start_line":179,"start_character":15,"end_line":179,"end_character":18},"updated":"2017-12-20 14:57:05.000000000","message":"nit: I think the value at the \u0027resources\u0027 key cannot be None and if it is an empty dict then RC_VGPU in res is enough as a guarding condition.","commit_id":"2cbca2c6dd1ecad70c1348eb7d0cf619d84e478f"}],"nova/virt/xenapi/vmops.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"fb51b7250bb0262840dfc967db5f782907c78c33","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        # Refer to https://xapi-project.github.io/xen-api/classes/vgpu.html"},{"line_number":415,"context_line":"        # for this Xen API of \u0027VGPU.create\u0027."},{"line_number":416,"context_line":"        self._session.call_xenapi(\u0027VGPU.create\u0027, vm_ref, grp_ref, \u00270\u0027,"},{"line_number":417,"context_line":"                                  {\u0027created_by\u0027: \u0027nova\u0027}, type_ref)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def spawn(self, context, instance, image_meta, injected_files,"},{"line_number":420,"context_line":"              admin_password, network_info\u003dNone, block_device_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_669f9903","line":417,"range":{"start_line":417,"start_character":50,"end_line":417,"end_character":54},"updated":"2017-11-14 09:09:04.000000000","message":"This is useful, *but* I wonder if actually it\u0027d be more useful to include the nova instance ID in the vGPU other-config?\nSure, we should be able to track back with valid references to the instance-id from the VM object but that is also true for the created_by: nova (it can be derived from the VM object)","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"dc3d9188e961be716c0856fb31588d5a26f18cd7","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        # Refer to https://xapi-project.github.io/xen-api/classes/vgpu.html"},{"line_number":415,"context_line":"        # for this Xen API of \u0027VGPU.create\u0027."},{"line_number":416,"context_line":"        self._session.call_xenapi(\u0027VGPU.create\u0027, vm_ref, grp_ref, \u00270\u0027,"},{"line_number":417,"context_line":"                                  {\u0027created_by\u0027: \u0027nova\u0027}, type_ref)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def spawn(self, context, instance, image_meta, injected_files,"},{"line_number":420,"context_line":"              admin_password, network_info\u003dNone, block_device_info\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f485f77_1f95c440","line":417,"range":{"start_line":417,"start_character":50,"end_line":417,"end_character":54},"in_reply_to":"1f485f77_669f9903","updated":"2017-11-14 11:17:31.000000000","message":"Agreed.","commit_id":"cb8b15af0f60d0b29b689eda139b74151d467d80"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"d1d14f61a667c0ee5e02c5b1a1c04829ad61f164","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                                            vgpu_info[\u0027vgpu_type_uuid\u0027])"},{"line_number":410,"context_line":"        # NOTE(jianghuaw): set other-config with \"nova-instance-uuid\" to"},{"line_number":411,"context_line":"        # declare which nova instance owns this vGPU. That should be useful"},{"line_number":412,"context_line":"        # for tacking purpose. \u00270\u0027 is the device id for VGPU. As we only"},{"line_number":413,"context_line":"        # support one VGPU at the moment, so only \u00270\u0027 is the valid value."},{"line_number":414,"context_line":"        # Refer to https://xapi-project.github.io/xen-api/classes/vgpu.html"},{"line_number":415,"context_line":"        # for this Xen API of \u0027VGPU.create\u0027."}],"source_content_type":"text/x-python","patch_set":18,"id":"1f485f77_53a187f7","line":412,"range":{"start_line":412,"start_character":13,"end_line":412,"end_character":29},"updated":"2017-11-17 17:51:27.000000000","message":"tracking purposes","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                                            vgpu_info[\u0027vgpu_type_uuid\u0027])"},{"line_number":410,"context_line":"        # NOTE(jianghuaw): set other-config with \"nova-instance-uuid\" to"},{"line_number":411,"context_line":"        # declare which nova instance owns this vGPU. That should be useful"},{"line_number":412,"context_line":"        # for tacking purpose. \u00270\u0027 is the device id for VGPU. As we only"},{"line_number":413,"context_line":"        # support one VGPU at the moment, so only \u00270\u0027 is the valid value."},{"line_number":414,"context_line":"        # Refer to https://xapi-project.github.io/xen-api/classes/vgpu.html"},{"line_number":415,"context_line":"        # for this Xen API of \u0027VGPU.create\u0027."}],"source_content_type":"text/x-python","patch_set":18,"id":"ff82abbf_859f64b3","line":412,"range":{"start_line":412,"start_character":13,"end_line":412,"end_character":29},"in_reply_to":"1f485f77_53a187f7","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"}],"releasenotes/notes/vgpu-18da86834c90f041.yaml":[{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"1af43d3c84a1121cb7c195f92a2f137f5b7bc193","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    VGPU resource in flavor:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    * nova flavor-key \u003cflavor-id\u003e set resources:VGPU\u003d1"},{"line_number":12,"context_line":"    "},{"line_number":13,"context_line":"    Then users can use the flavor to boot instance with vGPU attached."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    Note: In this release, we only support upto one vGPU type enabled"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1f485f77_8a515d65","line":12,"updated":"2017-11-15 02:05:44.000000000","message":"Looks the space need to remove","commit_id":"33998c439cb5d6ab6de25a6d29caac9ff6a0d14f"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"54d80728e0cc80b434bda8785f91e479a2a60ed1","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    VGPU resource in flavor:"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    * nova flavor-key \u003cflavor-id\u003e set resources:VGPU\u003d1"},{"line_number":12,"context_line":"    "},{"line_number":13,"context_line":"    Then users can use the flavor to boot instance with vGPU attached."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    Note: In this release, we only support upto one vGPU type enabled"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"1f485f77_cabbd56f","line":12,"in_reply_to":"1f485f77_8a515d65","updated":"2017-11-15 02:11:58.000000000","message":"yes, thanks.","commit_id":"33998c439cb5d6ab6de25a6d29caac9ff6a0d14f"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"3592e8115df59d6c111c643b2221efb897b6d8c7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When using XenAPI driver for XenServr, now we support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in nova compute configuration file with the configure"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_93d84d1e","line":4,"updated":"2017-11-16 10:20:33.000000000","message":"When....now.... \nsounds strange","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ae3d7ec8a429dad53559de916791d9603e2e7e05","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When using XenAPI driver for XenServr, now we support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in nova compute configuration file with the configure"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_b798d474","line":4,"in_reply_to":"1f485f77_93d84d1e","updated":"2017-11-16 10:50:57.000000000","message":"Done","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"007f256d7f61ac5fef0f173cd89356db89e5ca9b","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    XenServer automatically detects and groups together identical physical"},{"line_number":11,"context_line":"    GPUs. Although the physical GPUs may support multiple vGPU types, at"},{"line_number":12,"context_line":"    the moment nova only supports single vGPU type for each GPU group."},{"line_number":13,"context_line":"    The operators can run the following CLI commands in XenServer to get"},{"line_number":14,"context_line":"    the GPU groups and the vailable vGPU types if the host supports vGPU."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    * Get GPU groups:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_539775ed","line":13,"range":{"start_line":13,"start_character":53,"end_line":13,"end_character":55},"updated":"2017-11-16 10:23:35.000000000","message":"on?","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ae3d7ec8a429dad53559de916791d9603e2e7e05","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    XenServer automatically detects and groups together identical physical"},{"line_number":11,"context_line":"    GPUs. Although the physical GPUs may support multiple vGPU types, at"},{"line_number":12,"context_line":"    the moment nova only supports single vGPU type for each GPU group."},{"line_number":13,"context_line":"    The operators can run the following CLI commands in XenServer to get"},{"line_number":14,"context_line":"    the GPU groups and the vailable vGPU types if the host supports vGPU."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    * Get GPU groups:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_978b981d","line":13,"range":{"start_line":13,"start_character":53,"end_line":13,"end_character":55},"in_reply_to":"1f485f77_539775ed","updated":"2017-11-16 10:50:57.000000000","message":"I think it\u0027s ok.","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"007f256d7f61ac5fef0f173cd89356db89e5ca9b","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    GPUs. Although the physical GPUs may support multiple vGPU types, at"},{"line_number":12,"context_line":"    the moment nova only supports single vGPU type for each GPU group."},{"line_number":13,"context_line":"    The operators can run the following CLI commands in XenServer to get"},{"line_number":14,"context_line":"    the GPU groups and the vailable vGPU types if the host supports vGPU."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    * Get GPU groups:"},{"line_number":17,"context_line":"      xe gpu-group-list"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_73df11d6","line":14,"range":{"start_line":14,"start_character":27,"end_line":14,"end_character":35},"updated":"2017-11-16 10:23:35.000000000","message":"available?","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ae3d7ec8a429dad53559de916791d9603e2e7e05","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    GPUs. Although the physical GPUs may support multiple vGPU types, at"},{"line_number":12,"context_line":"    the moment nova only supports single vGPU type for each GPU group."},{"line_number":13,"context_line":"    The operators can run the following CLI commands in XenServer to get"},{"line_number":14,"context_line":"    the GPU groups and the vailable vGPU types if the host supports vGPU."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"    * Get GPU groups:"},{"line_number":17,"context_line":"      xe gpu-group-list"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_77901c4b","line":14,"range":{"start_line":14,"start_character":27,"end_line":14,"end_character":35},"in_reply_to":"1f485f77_73df11d6","updated":"2017-11-16 10:50:57.000000000","message":"Done","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"3592e8115df59d6c111c643b2221efb897b6d8c7","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    The values of \"model-name ( RO):\" from the output of the above commands"},{"line_number":23,"context_line":"    are the vGPU type names which you can choose from to set the nova"},{"line_number":24,"context_line":"    configure - ``[devices]/enabled_vgpu_types``. Please note only choose"},{"line_number":25,"context_line":"    one vGPU type for each GPU group."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    The operators should specify a vGPU resource in flavor\u0027s extra_specs:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_b36b491c","line":24,"updated":"2017-11-16 10:20:33.000000000","message":"choose only one?","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"ae3d7ec8a429dad53559de916791d9603e2e7e05","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    The values of \"model-name ( RO):\" from the output of the above commands"},{"line_number":23,"context_line":"    are the vGPU type names which you can choose from to set the nova"},{"line_number":24,"context_line":"    configure - ``[devices]/enabled_vgpu_types``. Please note only choose"},{"line_number":25,"context_line":"    one vGPU type for each GPU group."},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    The operators should specify a vGPU resource in flavor\u0027s extra_specs:"}],"source_content_type":"text/x-yaml","patch_set":15,"id":"1f485f77_5781a0fa","line":24,"in_reply_to":"1f485f77_b36b491c","updated":"2017-11-16 10:50:57.000000000","message":"Done","commit_id":"8b90aa5c3105cc61a43d336485eb8d703015e543"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"130f27a79b9e6e5aa7edcf1d7b62975e11579d66","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When using XenAPI driver for XenServr, we can support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in nova compute configuration file with the configure"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f485f77_24349092","line":4,"range":{"start_line":4,"start_character":33,"end_line":4,"end_character":41},"updated":"2017-11-17 10:16:19.000000000","message":"XenServer","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When using XenAPI driver for XenServr, we can support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in nova compute configuration file with the configure"}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff82abbf_65758098","line":4,"range":{"start_line":4,"start_character":33,"end_line":4,"end_character":41},"in_reply_to":"1f485f77_24349092","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"130f27a79b9e6e5aa7edcf1d7b62975e11579d66","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    * nova flavor-key \u003cflavor-id\u003e set resources:VGPU\u003d1"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    Then users can use the flavor to boot instance with a vGPU attached."},{"line_number":32,"context_line":"    At the moment, XenAPI doesn\u0027t support multiple vGPUs for single instance."},{"line_number":33,"context_line":"    So ``resources:VGPU`` in the flavor\u0027s extra_specs should always be ``1``."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"1f485f77_e4de783c","line":33,"range":{"start_line":32,"start_character":4,"end_line":33,"end_character":77},"updated":"2017-11-17 10:16:19.000000000","message":"Suggested change:\nXenServer doesn\u0027t support multiple vGPUS for a single instance, so ``resources:VGPU`` ...","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"143663f706e19cc8eae0433606f39477fe731d19","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    * nova flavor-key \u003cflavor-id\u003e set resources:VGPU\u003d1"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    Then users can use the flavor to boot instance with a vGPU attached."},{"line_number":32,"context_line":"    At the moment, XenAPI doesn\u0027t support multiple vGPUs for single instance."},{"line_number":33,"context_line":"    So ``resources:VGPU`` in the flavor\u0027s extra_specs should always be ``1``."}],"source_content_type":"text/x-yaml","patch_set":18,"id":"ff82abbf_e5ad10eb","line":33,"range":{"start_line":32,"start_character":4,"end_line":33,"end_character":77},"in_reply_to":"1f485f77_e4de783c","updated":"2017-11-20 03:11:54.000000000","message":"Done","commit_id":"00ec0bdfc4ba5909924cecf48a9c0cb7ee52b7cb"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"c5c9f1c5e6b7ef3895d2463c6408b64d151db99d","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When using XenAPI driver for XenServer, we can support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in the nova compute configuration file with the configure"},{"line_number":8,"context_line":"    option - ``[devices]/enabled_vgpu_types``. Only the enabled vGPU types"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"ff82abbf_58f72c5a","line":5,"range":{"start_line":4,"start_character":67,"end_line":5,"end_character":15},"updated":"2017-11-29 03:57:31.000000000","message":"instances \u003c--\u003e vGPUs or\ninstance \u003c--\u003e a vGPUs ?","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"460afc80aa88a8d68c6191ce26105c0e9522295c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    When using XenAPI driver for XenServer, we can support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in the nova compute configuration file with the configure"},{"line_number":8,"context_line":"    option - ``[devices]/enabled_vgpu_types``. Only the enabled vGPU types"}],"source_content_type":"text/x-yaml","patch_set":30,"id":"ff82abbf_53b03bde","line":5,"range":{"start_line":4,"start_character":67,"end_line":5,"end_character":15},"in_reply_to":"ff82abbf_58f72c5a","updated":"2017-11-30 18:27:14.000000000","message":"No, I think the wording above is appropriate.","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":25638,"name":"Naichuan Sun","email":"naichuan.sun@citrix.com","username":"naichuans"},"change_message_id":"c5c9f1c5e6b7ef3895d2463c6408b64d151db99d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    * nova flavor-key \u003cflavor-id\u003e set resources:VGPU\u003d1"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    Then users can use the flavor to boot instances with a vGPU attached."},{"line_number":28,"context_line":"    At the moment, XenServer doesn\u0027t support multiple vGPUs for a single"},{"line_number":29,"context_line":"    instance, so ``resources:VGPU`` in the flavor\u0027s extra_specs should"},{"line_number":30,"context_line":"    always be ``1``."}],"source_content_type":"text/x-yaml","patch_set":30,"id":"ff82abbf_b8b67889","line":27,"range":{"start_line":27,"start_character":42,"end_line":27,"end_character":72},"updated":"2017-11-29 03:57:31.000000000","message":"ditto","commit_id":"e19d0c7ff26c5f85406cf21f17784aebc6be6a3d"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"87e28ec5af12a689815a99fb645837a892bbd7b9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    When using XenAPI driver for XenServer, we can support booting instances"},{"line_number":5,"context_line":"    with a vGPU attached to get better graphics processing capability."},{"line_number":6,"context_line":"    In order to use this feature, the operators should specify the enabled"},{"line_number":7,"context_line":"    vGPU types in the nova compute configuration file with the configure"},{"line_number":8,"context_line":"    option - ``[devices]/enabled_vgpu_types``. Only the enabled vGPU types"},{"line_number":9,"context_line":"    can be used by instances."},{"line_number":10,"context_line":"    XenServer automatically detects and groups together identical physical"}],"source_content_type":"text/x-yaml","patch_set":33,"id":"df87a7cf_e91592e6","line":7,"range":{"start_line":7,"start_character":63,"end_line":7,"end_character":72},"updated":"2017-12-15 18:34:25.000000000","message":"configuration","commit_id":"4ca343cda846469c22e12fe045ee27b80dea248c"}]}
