)]}'
{"whitebox_tempest_plugin/api/compute/test_vgpu.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":47,"context_line":"    # NOTE(jparker) as of Queens all hypervisors that support vGPUs accept"},{"line_number":48,"context_line":"    # a single vGPU per instance, so this value is not exposed as a whitebox"},{"line_number":49,"context_line":"    # hardware configurable at this time."},{"line_number":50,"context_line":"    vgpu_resource_value \u003d 1"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @classmethod"},{"line_number":53,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"ed1d1824_56310516","line":50,"updated":"2021-03-30 17:57:00.000000000","message":"Could we rename this to something like vgpu_count_per_instance?\n\nLater: Or I guess vgpu_amount_per_instance, to be consistent with the proposed renaming of value-\u003eamount below...","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    # NOTE(jparker) as of Queens all hypervisors that support vGPUs accept"},{"line_number":48,"context_line":"    # a single vGPU per instance, so this value is not exposed as a whitebox"},{"line_number":49,"context_line":"    # hardware configurable at this time."},{"line_number":50,"context_line":"    vgpu_resource_value \u003d 1"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @classmethod"},{"line_number":53,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f0abb0e3_c6e1a248","line":50,"in_reply_to":"ed1d1824_56310516","updated":"2021-03-30 18:05:38.000000000","message":"Use definitely I prefer renaming it as well.  I will use vgpu_amount_per_instance","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":67,"context_line":"        super(VGPUTest, cls).resource_setup()"},{"line_number":68,"context_line":"        flavor_name \u003d data_utils.rand_name(\u0027vgpu_test_flavor\u0027)"},{"line_number":69,"context_line":"        extra_specs \u003d {\"resources:VGPU\": str(cls.vgpu_resource_value)}"},{"line_number":70,"context_line":"        cls.flavor \u003d cls.admin_flavors_client.create_flavor("},{"line_number":71,"context_line":"            name\u003dflavor_name,"},{"line_number":72,"context_line":"            ram\u003d64,"},{"line_number":73,"context_line":"            vcpus\u003d2,"}],"source_content_type":"text/x-python","patch_set":1,"id":"63f8f639_ff876366","line":70,"updated":"2021-03-30 17:57:00.000000000","message":"We talked about it on IRC, but a #NOTE here would be nice explaining why we\u0027re calling the clients directly.","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        super(VGPUTest, cls).resource_setup()"},{"line_number":68,"context_line":"        flavor_name \u003d data_utils.rand_name(\u0027vgpu_test_flavor\u0027)"},{"line_number":69,"context_line":"        extra_specs \u003d {\"resources:VGPU\": str(cls.vgpu_resource_value)}"},{"line_number":70,"context_line":"        cls.flavor \u003d cls.admin_flavors_client.create_flavor("},{"line_number":71,"context_line":"            name\u003dflavor_name,"},{"line_number":72,"context_line":"            ram\u003d64,"},{"line_number":73,"context_line":"            vcpus\u003d2,"}],"source_content_type":"text/x-python","patch_set":1,"id":"99bc6706_1a2ad03e","line":70,"in_reply_to":"63f8f639_ff876366","updated":"2021-03-30 18:05:38.000000000","message":"Ack","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        super(VGPUTest, cls).setup_credentials()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def _get_rp_uuid_from_hostname(self, hostname):"},{"line_number":121,"context_line":"        \"\"\"Given a provided compute host return the parent rp uuid"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        :param hostname: str, compute hostname to check"},{"line_number":124,"context_line":"        :return parent_rp_uuid: str, string representation of the parent rp"}],"source_content_type":"text/x-python","patch_set":1,"id":"6be6e8e0_f2dc286a","line":121,"range":{"start_line":121,"start_character":52,"end_line":121,"end_character":58},"updated":"2021-03-30 17:57:00.000000000","message":"I\u0027m not sure you mean parent - it\u0027s the actual host\u0027s RP...","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        super(VGPUTest, cls).setup_credentials()"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    def _get_rp_uuid_from_hostname(self, hostname):"},{"line_number":121,"context_line":"        \"\"\"Given a provided compute host return the parent rp uuid"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        :param hostname: str, compute hostname to check"},{"line_number":124,"context_line":"        :return parent_rp_uuid: str, string representation of the parent rp"}],"source_content_type":"text/x-python","patch_set":1,"id":"60e2106e_1f74f175","line":121,"range":{"start_line":121,"start_character":52,"end_line":121,"end_character":58},"in_reply_to":"6be6e8e0_f2dc286a","updated":"2021-03-30 18:05:38.000000000","message":"Right this should be removed.","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":128,"context_line":"            name\u003dhostname)"},{"line_number":129,"context_line":"        return resp.get(\u0027resource_providers\u0027)[0].get(\u0027uuid\u0027)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def _get_all_children_with_resource_class(self, rp_uuid, resource, value):"},{"line_number":132,"context_line":"        \"\"\"List all child RP UUIDs providing resource class and value"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        Given a parent resource provider uuid, get all in-tree child RP UUID"}],"source_content_type":"text/x-python","patch_set":1,"id":"eab21d06_dccbf88b","line":131,"range":{"start_line":131,"start_character":71,"end_line":131,"end_character":76},"updated":"2021-03-30 17:57:00.000000000","message":"Placement seems to use \u0027amount\u0027 to indicate \"amount of resource consumed/desired\", could we rename this here?","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":false,"context_lines":[{"line_number":128,"context_line":"            name\u003dhostname)"},{"line_number":129,"context_line":"        return resp.get(\u0027resource_providers\u0027)[0].get(\u0027uuid\u0027)"},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"    def _get_all_children_with_resource_class(self, rp_uuid, resource, value):"},{"line_number":132,"context_line":"        \"\"\"List all child RP UUIDs providing resource class and value"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"        Given a parent resource provider uuid, get all in-tree child RP UUID"}],"source_content_type":"text/x-python","patch_set":1,"id":"62a367b6_97775865","line":131,"range":{"start_line":131,"start_character":71,"end_line":131,"end_character":76},"in_reply_to":"eab21d06_dccbf88b","updated":"2021-03-30 18:05:38.000000000","message":"Ack","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":167,"context_line":"            total_usage +\u003d usages"},{"line_number":168,"context_line":"        return total_usage"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _get_resource_class_util_for_host(self, hostname, resource, value):"},{"line_number":171,"context_line":"        \"\"\"Get the total usage of a resource class from the compute hostname"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        Given a provided resource class and value parameter, aggregate the"}],"source_content_type":"text/x-python","patch_set":1,"id":"15fdabd5_3124a668","line":170,"range":{"start_line":170,"start_character":58,"end_line":170,"end_character":66},"updated":"2021-03-30 17:57:00.000000000","message":"OK, I had to think about it, but I\u0027ve managed to figure out what my beef with this is:\n\nYou\u0027re passing \u0027resource\u0027 because you want these methods to be reusable and more general. That\u0027s fine. But then you\u0027re sticking them as private methods in the test_vgpu.py package :) If you want to make the reusable for the future (I\u0027d argue that it\u0027s maybe a bit premature, but I won\u0027t stand in your way), put them in a separate mixin. If you\u0027re leaving them as private methods here, just hardcode the resource to be \u0027VGPU\u0027, because that\u0027s all they\u0027ll ever be called with.","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":true,"context_lines":[{"line_number":167,"context_line":"            total_usage +\u003d usages"},{"line_number":168,"context_line":"        return total_usage"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def _get_resource_class_util_for_host(self, hostname, resource, value):"},{"line_number":171,"context_line":"        \"\"\"Get the total usage of a resource class from the compute hostname"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        Given a provided resource class and value parameter, aggregate the"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf298f91_674e43a3","line":170,"range":{"start_line":170,"start_character":58,"end_line":170,"end_character":66},"in_reply_to":"15fdabd5_3124a668","updated":"2021-03-30 18:05:38.000000000","message":"I\u0027ll follow the pattern we discussed in the past of add it when its necessary.  So I\u0027ll hardcode VGPU for now and make it a less generic method until its necessary down the road.","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":182,"context_line":"        requested resource class on the compute node"},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        rp_uuid \u003d self._get_rp_uuid_from_hostname(hostname)"},{"line_number":185,"context_line":"        rp_children \u003d self._get_all_children_with_resource_class("},{"line_number":186,"context_line":"            rp_uuid\u003drp_uuid,"},{"line_number":187,"context_line":"            resource\u003dresource,"},{"line_number":188,"context_line":"            value\u003dvalue"}],"source_content_type":"text/x-python","patch_set":1,"id":"7158e4f5_4fd7c256","line":185,"updated":"2021-03-30 17:57:00.000000000","message":"Either this or L193 should go...","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        requested resource class on the compute node"},{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        rp_uuid \u003d self._get_rp_uuid_from_hostname(hostname)"},{"line_number":185,"context_line":"        rp_children \u003d self._get_all_children_with_resource_class("},{"line_number":186,"context_line":"            rp_uuid\u003drp_uuid,"},{"line_number":187,"context_line":"            resource\u003dresource,"},{"line_number":188,"context_line":"            value\u003dvalue"}],"source_content_type":"text/x-python","patch_set":1,"id":"eb7099f5_0a130158","line":185,"in_reply_to":"7158e4f5_4fd7c256","updated":"2021-03-30 18:05:38.000000000","message":"Ack","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c9d6d22f157a87448163c34d911d177e3f7595cf","unresolved":true,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def test_create_vgpu_instance(self):"},{"line_number":253,"context_line":"        # Find all hostdev devices on the instance of type mdev and validate"},{"line_number":254,"context_line":"        # the count matches the request flavor amount"},{"line_number":255,"context_line":"        vgpu_devices \u003d self.get_server_xml(self.server[\u0027id\u0027]).findall("},{"line_number":256,"context_line":"            \"./devices/hostdev[@type\u003d\u0027mdev\u0027]\""},{"line_number":257,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"2b26572c_7daaac6c","line":254,"updated":"2021-03-30 17:57:00.000000000","message":"Right, this uses the class-wide server created in resource_setup","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"d6853a5e93f8f922fb80b7c0916e96dda9d80b0d","unresolved":true,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    def test_create_vgpu_instance(self):"},{"line_number":253,"context_line":"        # Find all hostdev devices on the instance of type mdev and validate"},{"line_number":254,"context_line":"        # the count matches the request flavor amount"},{"line_number":255,"context_line":"        vgpu_devices \u003d self.get_server_xml(self.server[\u0027id\u0027]).findall("},{"line_number":256,"context_line":"            \"./devices/hostdev[@type\u003d\u0027mdev\u0027]\""},{"line_number":257,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":1,"id":"8f0fd7f3_5311c67e","line":254,"in_reply_to":"2b26572c_7daaac6c","updated":"2021-03-30 18:05:38.000000000","message":"I\u0027ll append to the comment highlighting this is based on class wide resource setup","commit_id":"5e2df47f58700fde5c34e148c085b9c8d991aec9"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b87940fec814721f96db222dd7d3436b79fda444","unresolved":true,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class VGPUTest(base.BaseWhiteboxComputeTest):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    placement_min_microversion \u003d \u00271.14\u0027"},{"line_number":45,"context_line":"    placement_max_microversion \u003d \u0027latest\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # NOTE(jparker) as of Queens all hypervisors that support vGPUs accept"}],"source_content_type":"text/x-python","patch_set":2,"id":"3b28a901_ac226401","line":44,"updated":"2021-04-14 21:50:34.000000000","message":"nit: I realize I\u0027ve let this slide in the past, but I think we should make a habit of explaining why we need this min microversion.","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94d6d0ea70095acc4050f56d5b3ef47b436840aa","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class VGPUTest(base.BaseWhiteboxComputeTest):"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    placement_min_microversion \u003d \u00271.14\u0027"},{"line_number":45,"context_line":"    placement_max_microversion \u003d \u0027latest\u0027"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    # NOTE(jparker) as of Queens all hypervisors that support vGPUs accept"}],"source_content_type":"text/x-python","patch_set":2,"id":"d2d7cc97_cc73f755","line":44,"in_reply_to":"3b28a901_ac226401","updated":"2021-04-16 13:16:20.000000000","message":"Ack","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b87940fec814721f96db222dd7d3436b79fda444","unresolved":true,"context_lines":[{"line_number":59,"context_line":"    @classmethod"},{"line_number":60,"context_line":"    def setup_clients(cls):"},{"line_number":61,"context_line":"        super(VGPUTest, cls).setup_clients()"},{"line_number":62,"context_line":"        cls.resource_providers_client \u003d cls.os_admin.resource_providers_client"},{"line_number":63,"context_line":"        cls.placement_client \u003d cls.os_admin.placement_client"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"ae8acb90_df0a68b8","line":62,"updated":"2021-04-14 21:50:34.000000000","message":"We should stop doing this kind of admin override - the pain it\u0027s caused with the Barbican job is testimony to that effect. We should use the admin client explicitly when we need them.","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94d6d0ea70095acc4050f56d5b3ef47b436840aa","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    @classmethod"},{"line_number":60,"context_line":"    def setup_clients(cls):"},{"line_number":61,"context_line":"        super(VGPUTest, cls).setup_clients()"},{"line_number":62,"context_line":"        cls.resource_providers_client \u003d cls.os_admin.resource_providers_client"},{"line_number":63,"context_line":"        cls.placement_client \u003d cls.os_admin.placement_client"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"8050234b_08ef49ce","line":62,"in_reply_to":"ae8acb90_df0a68b8","updated":"2021-04-16 13:16:20.000000000","message":"Ack","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b87940fec814721f96db222dd7d3436b79fda444","unresolved":true,"context_lines":[{"line_number":158,"context_line":"    def _get_usage_for_resource_class_vgpu(self, rp_uuids):"},{"line_number":159,"context_line":"        \"\"\"Total usage of resource class vGPU from provided list of RP UUIDs"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param rp_uuids: list, list of str representing all RP UUIDs to query"},{"line_number":162,"context_line":"        :return total_vgpu_usage: int, total usage of resource class VGPU from"},{"line_number":163,"context_line":"        all provided RP UUIDS"},{"line_number":164,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1b32bc60_95ef5f93","line":161,"range":{"start_line":161,"start_character":25,"end_line":161,"end_character":29},"updated":"2021-04-14 21:50:34.000000000","message":"nit: don\u0027t need to repeat list twice :)","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94d6d0ea70095acc4050f56d5b3ef47b436840aa","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    def _get_usage_for_resource_class_vgpu(self, rp_uuids):"},{"line_number":159,"context_line":"        \"\"\"Total usage of resource class vGPU from provided list of RP UUIDs"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        :param rp_uuids: list, list of str representing all RP UUIDs to query"},{"line_number":162,"context_line":"        :return total_vgpu_usage: int, total usage of resource class VGPU from"},{"line_number":163,"context_line":"        all provided RP UUIDS"},{"line_number":164,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"4c688a96_5c2dec71","line":161,"range":{"start_line":161,"start_character":25,"end_line":161,"end_character":29},"in_reply_to":"1b32bc60_95ef5f93","updated":"2021-04-16 13:16:20.000000000","message":"Ack","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"b87940fec814721f96db222dd7d3436b79fda444","unresolved":true,"context_lines":[{"line_number":175,"context_line":"    def _get_vgpu_util_for_host(self, hostname):"},{"line_number":176,"context_line":"        \"\"\"Get the total usage of a resource class from the compute hostname"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        Given a provided resource class and amount parameter, aggregate the"},{"line_number":179,"context_line":"        current usage of the resource class that can satisify the"},{"line_number":180,"context_line":"        resource/amount request from all valid resource providers on the"},{"line_number":181,"context_line":"        compute host."}],"source_content_type":"text/x-python","patch_set":2,"id":"1987788c_2f21a9cc","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":39},"updated":"2021-04-14 21:50:34.000000000","message":"I think the docstring is out of date, you\u0027re still talking about resource classes :)","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":31033,"name":"James Parker","email":"jparker@redhat.com","username":"jparker"},"change_message_id":"94d6d0ea70095acc4050f56d5b3ef47b436840aa","unresolved":false,"context_lines":[{"line_number":175,"context_line":"    def _get_vgpu_util_for_host(self, hostname):"},{"line_number":176,"context_line":"        \"\"\"Get the total usage of a resource class from the compute hostname"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"        Given a provided resource class and amount parameter, aggregate the"},{"line_number":179,"context_line":"        current usage of the resource class that can satisify the"},{"line_number":180,"context_line":"        resource/amount request from all valid resource providers on the"},{"line_number":181,"context_line":"        compute host."}],"source_content_type":"text/x-python","patch_set":2,"id":"8b726788_bbdfee77","line":178,"range":{"start_line":178,"start_character":25,"end_line":178,"end_character":39},"in_reply_to":"1987788c_2f21a9cc","updated":"2021-04-16 13:16:20.000000000","message":"Ack","commit_id":"ef037e97473f4a9ce1ece4a90a5d6c49e69731b2"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9d02d49376d5a12ecce149a7660ac270cb22ad69","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    # Requires at least placement microversion 1.14 in order search through"},{"line_number":45,"context_line":"    # nested resources providers via the \u0027in_tree\u003d\u003cUUID\u003e\u0027 parameter"},{"line_number":46,"context_line":"    placement_min_microversion \u003d \u00271.14\u0027"},{"line_number":47,"context_line":"    placement_max_microversion \u003d \u0027latest\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    # NOTE(jparker) as of Queens all hypervisors that support vGPUs accept"},{"line_number":50,"context_line":"    # a single vGPU per instance, so this value is not exposed as a whitebox"}],"source_content_type":"text/x-python","patch_set":3,"id":"ddafdcb4_714d3be4","line":47,"updated":"2021-04-21 13:17:59.000000000","message":"LGTM","commit_id":"0dc27648fccdbf88837c7bbcdd89fb2198f31b6f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9d02d49376d5a12ecce149a7660ac270cb22ad69","unresolved":true,"context_lines":[{"line_number":49,"context_line":"    # NOTE(jparker) as of Queens all hypervisors that support vGPUs accept"},{"line_number":50,"context_line":"    # a single vGPU per instance, so this value is not exposed as a whitebox"},{"line_number":51,"context_line":"    # hardware configurable at this time."},{"line_number":52,"context_line":"    vgpu_amount_per_instance \u003d 1"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    @classmethod"},{"line_number":55,"context_line":"    def skip_checks(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"2de87d01_19497e02","line":52,"updated":"2021-04-21 13:17:59.000000000","message":"Correct, atm we don\u0027t support more than 1.","commit_id":"0dc27648fccdbf88837c7bbcdd89fb2198f31b6f"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"9d02d49376d5a12ecce149a7660ac270cb22ad69","unresolved":true,"context_lines":[{"line_number":234,"context_line":"        waiters.wait_for_server_status(self.servers_client,"},{"line_number":235,"context_line":"                                       server_id, \u0027ACTIVE\u0027)"},{"line_number":236,"context_line":"        dst_host \u003d self.get_host_for_server(server_id)"},{"line_number":237,"context_line":"        assert_func(src_host, dst_host)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def test_create_vgpu_instance(self):"},{"line_number":240,"context_line":"        # NOTE (jparker) instance creation is not done here since it is"}],"source_content_type":"text/x-python","patch_set":3,"id":"2a872b7f_2b5f6e5d","line":237,"updated":"2021-04-21 13:17:59.000000000","message":"++","commit_id":"0dc27648fccdbf88837c7bbcdd89fb2198f31b6f"}]}
