)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Record requester in the InstancePCIRequest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An InstancePCIRequest might represents the VF device request of a"},{"line_number":10,"context_line":"neutron port that has bandwidth request as well. In this case nova"},{"line_number":11,"context_line":"needs to correlate the pci request with the port\u0027s resource request to"},{"line_number":12,"context_line":"make sure the bandwidth and the VF are allocated from the same PF."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"9fdfeff1_a5041fc7","line":9,"range":{"start_line":9,"start_character":28,"end_line":9,"end_character":38},"updated":"2019-02-27 14:58:57.000000000","message":"represent","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Record requester in the InstancePCIRequest"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An InstancePCIRequest might represents the VF device request of a"},{"line_number":10,"context_line":"neutron port that has bandwidth request as well. In this case nova"},{"line_number":11,"context_line":"needs to correlate the pci request with the port\u0027s resource request to"},{"line_number":12,"context_line":"make sure the bandwidth and the VF are allocated from the same PF."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"9fdfeff1_178e5d2d","line":9,"range":{"start_line":9,"start_character":28,"end_line":9,"end_character":38},"in_reply_to":"9fdfeff1_a5041fc7","updated":"2019-02-28 16:24:59.000000000","message":"Done","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This patch introduces the new ``requester_id`` field to the"},{"line_number":15,"context_line":"InstancePCIRequest ovo and stores the port_id in that field if the"},{"line_number":16,"context_line":"pci request is created from a neturon port. For completeness if the"},{"line_number":17,"context_line":"pci request is created from a flavor then the flavor_id will be stored"},{"line_number":18,"context_line":"there."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The value of the ``requester_id`` field will be used in a subsequent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"9fdfeff1_45e3f305","line":17,"range":{"start_line":17,"start_character":46,"end_line":17,"end_character":55},"updated":"2019-02-27 14:58:57.000000000","message":"nit: I\u0027m assuming you mean Flavor.flavorid because there is also Flavor.id which is sometimes called flavor_id but we don\u0027t want to store the flavor.id integer primary key since the flavor could be deleted.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This patch introduces the new ``requester_id`` field to the"},{"line_number":15,"context_line":"InstancePCIRequest ovo and stores the port_id in that field if the"},{"line_number":16,"context_line":"pci request is created from a neturon port. For completeness if the"},{"line_number":17,"context_line":"pci request is created from a flavor then the flavor_id will be stored"},{"line_number":18,"context_line":"there."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The value of the ``requester_id`` field will be used in a subsequent"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":25,"id":"9fdfeff1_7704894a","line":17,"range":{"start_line":17,"start_character":46,"end_line":17,"end_character":55},"in_reply_to":"9fdfeff1_45e3f305","updated":"2019-02-28 16:24:59.000000000","message":"Done","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"22213628827a6cd73104b030d40ad4f2551add12","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch introduces the new ``requester_id`` field to the"},{"line_number":15,"context_line":"InstancePCIRequest ovo and stores the port_id in that field if the"},{"line_number":16,"context_line":"pci request is created from a neturon port."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The value of the ``requester_id`` field will be used in a subsequent"},{"line_number":19,"context_line":"patch to match it against the existing RequestGroup.requester_id."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"9fdfeff1_769b2a16","line":16,"range":{"start_line":16,"start_character":30,"end_line":16,"end_character":37},"updated":"2019-02-28 16:59:38.000000000","message":"neutron","commit_id":"40b60e5cd9ca0e0941929ee0fcdee4633511b9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39fafada3f78023c39d82186d49f73476eb2f201","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"This patch introduces the new ``requester_id`` field to the"},{"line_number":15,"context_line":"InstancePCIRequest ovo and stores the port_id in that field if the"},{"line_number":16,"context_line":"pci request is created from a neturon port."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"The value of the ``requester_id`` field will be used in a subsequent"},{"line_number":19,"context_line":"patch to match it against the existing RequestGroup.requester_id."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":28,"id":"9fdfeff1_595bb752","line":16,"range":{"start_line":16,"start_character":30,"end_line":16,"end_character":37},"in_reply_to":"9fdfeff1_769b2a16","updated":"2019-02-28 17:29:44.000000000","message":"Done","commit_id":"40b60e5cd9ca0e0941929ee0fcdee4633511b9e0"}],"nova/network/neutronv2/api.py":[{"author":{"_account_id":21813,"name":"Andrey Volkov","email":"m@amadev.ru","username":"avolkov"},"change_message_id":"e1302939f628909fc34813df6ad79b9d2152319e","unresolved":false,"context_lines":[{"line_number":2029,"context_line":"            tunneled_ \u003d False"},{"line_number":2030,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":2031,"context_line":"            pci_request_id \u003d None"},{"line_number":2032,"context_line":"            requester_id \u003d None"},{"line_number":2033,"context_line":""},{"line_number":2034,"context_line":"            if request_net.port_id:"},{"line_number":2035,"context_line":"                requester_id \u003d request_net.port_id"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_a4df6164","line":2032,"updated":"2019-02-26 11:59:24.000000000","message":"Don\u0027t we need to add requester_type (network, port, flavor) or something to be able to differentiate what data actually is?","commit_id":"baebdfb995e077b92af7ca20a208ece264d376f4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6fbdf10982259d6ac2115f29d0c5d762719e39e2","unresolved":false,"context_lines":[{"line_number":2029,"context_line":"            tunneled_ \u003d False"},{"line_number":2030,"context_line":"            vnic_type \u003d network_model.VNIC_TYPE_NORMAL"},{"line_number":2031,"context_line":"            pci_request_id \u003d None"},{"line_number":2032,"context_line":"            requester_id \u003d None"},{"line_number":2033,"context_line":""},{"line_number":2034,"context_line":"            if request_net.port_id:"},{"line_number":2035,"context_line":"                requester_id \u003d request_net.port_id"}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_6c306456","line":2032,"in_reply_to":"9fdfeff1_a4df6164","updated":"2019-02-27 13:09:44.000000000","message":"Right now it is used in a way that a PciRequest  requester_id matched with a RequestGroup requester_id so right now we don\u0027t need a type field.","commit_id":"baebdfb995e077b92af7ca20a208ece264d376f4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"            elif request_net.network_id and not request_net.auto_allocate:"},{"line_number":2059,"context_line":"                network_id \u003d request_net.network_id"},{"line_number":2060,"context_line":"                requester_id \u003d network_id"},{"line_number":2061,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2062,"context_line":"                    context, neutron, network_id)"},{"line_number":2063,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_a5bbbfe2","line":2060,"range":{"start_line":2060,"start_character":16,"end_line":2060,"end_character":41},"updated":"2019-02-27 14:58:57.000000000","message":"nit: you didn\u0027t mention this in the commit message - I also don\u0027t see a test for it","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":2057,"context_line":""},{"line_number":2058,"context_line":"            elif request_net.network_id and not request_net.auto_allocate:"},{"line_number":2059,"context_line":"                network_id \u003d request_net.network_id"},{"line_number":2060,"context_line":"                requester_id \u003d network_id"},{"line_number":2061,"context_line":"                physnet, tunneled_ \u003d self._get_physnet_tunneled_info("},{"line_number":2062,"context_line":"                    context, neutron, network_id)"},{"line_number":2063,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_97848db2","line":2060,"range":{"start_line":2060,"start_character":16,"end_line":2060,"end_character":41},"in_reply_to":"9fdfeff1_a5bbbfe2","updated":"2019-02-28 16:24:59.000000000","message":"Removed. Done.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"22213628827a6cd73104b030d40ad4f2551add12","unresolved":false,"context_lines":[{"line_number":2051,"context_line":"            requester_id \u003d None"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"            if request_net.port_id:"},{"line_number":2054,"context_line":"                requester_id \u003d request_net.port_id"},{"line_number":2055,"context_line":"                result \u003d self._get_port_vnic_info("},{"line_number":2056,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":2057,"context_line":"                vnic_type, trusted, network_id, resource_request \u003d result"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_16a3be44","line":2054,"range":{"start_line":2054,"start_character":16,"end_line":2054,"end_character":50},"updated":"2019-02-28 16:59:38.000000000","message":"Technically we only need to do this if L2061 is True, correct? I\u0027m not sure if that saves us anything, but since the two are linked semantically maybe it makes sense to only set this on the InstancePCIRequest if the port has resource requests.","commit_id":"40b60e5cd9ca0e0941929ee0fcdee4633511b9e0"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"39fafada3f78023c39d82186d49f73476eb2f201","unresolved":false,"context_lines":[{"line_number":2051,"context_line":"            requester_id \u003d None"},{"line_number":2052,"context_line":""},{"line_number":2053,"context_line":"            if request_net.port_id:"},{"line_number":2054,"context_line":"                requester_id \u003d request_net.port_id"},{"line_number":2055,"context_line":"                result \u003d self._get_port_vnic_info("},{"line_number":2056,"context_line":"                    context, neutron, request_net.port_id)"},{"line_number":2057,"context_line":"                vnic_type, trusted, network_id, resource_request \u003d result"}],"source_content_type":"text/x-python","patch_set":28,"id":"9fdfeff1_79379bff","line":2054,"range":{"start_line":2054,"start_character":16,"end_line":2054,"end_character":50},"in_reply_to":"9fdfeff1_16a3be44","updated":"2019-02-28 17:29:44.000000000","message":"Done","commit_id":"40b60e5cd9ca0e0941929ee0fcdee4633511b9e0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"b9155c2dd15ee61331904c7640e9fdd67044868e","unresolved":false,"context_lines":[{"line_number":2102,"context_line":"                    count\u003d1,"},{"line_number":2103,"context_line":"                    spec\u003d[spec],"},{"line_number":2104,"context_line":"                    request_id\u003duuidutils.generate_uuid(),"},{"line_number":2105,"context_line":"                    requester_id\u003drequest_net.port_id)"},{"line_number":2106,"context_line":"                pci_requests.requests.append(request)"},{"line_number":2107,"context_line":"                pci_request_id \u003d request.request_id"},{"line_number":2108,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"9fdfeff1_9c56ed04","line":2105,"range":{"start_line":2105,"start_character":33,"end_line":2105,"end_character":52},"updated":"2019-02-28 17:33:23.000000000","message":"This is the same thing as what you had in PS28. What I was looking for was this around L2059:\n\nif resource_request:\n    requester_id \u003d request_net.port_id\n    ...","commit_id":"5cab213a5dac26e6efd3e87bfeb452c8b0c0edbe"}],"nova/objects/instance_pci_requests.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"901d68cc277cf53b867b2726968064e8b34da731","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            del primitive[\u0027numa_policy\u0027]"},{"line_number":52,"context_line":"        if target_version \u003c (1, 1) and \u0027request_id\u0027 in primitive:"},{"line_number":53,"context_line":"            del primitive[\u0027request_id\u0027]"},{"line_number":54,"context_line":"        if target_version \u003c (1, 3) and \u0027requester_id\u0027 in primitive:"},{"line_number":55,"context_line":"            del primitive[\u0027requester_id\u0027]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_acdb037b","line":54,"updated":"2019-02-22 13:59:53.000000000","message":"move this to the top, see how these are going in order from newest to oldest","commit_id":"baebdfb995e077b92af7ca20a208ece264d376f4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"6fbdf10982259d6ac2115f29d0c5d762719e39e2","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            del primitive[\u0027numa_policy\u0027]"},{"line_number":52,"context_line":"        if target_version \u003c (1, 1) and \u0027request_id\u0027 in primitive:"},{"line_number":53,"context_line":"            del primitive[\u0027request_id\u0027]"},{"line_number":54,"context_line":"        if target_version \u003c (1, 3) and \u0027requester_id\u0027 in primitive:"},{"line_number":55,"context_line":"            del primitive[\u0027requester_id\u0027]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":23,"id":"9fdfeff1_8c358847","line":54,"in_reply_to":"9fdfeff1_acdb037b","updated":"2019-02-27 13:09:44.000000000","message":"Done","commit_id":"baebdfb995e077b92af7ca20a208ece264d376f4"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":44,"context_line":"        setattr(self, attr, None)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":47,"context_line":"        super(InstancePCIRequest, self).obj_make_compatible(primitive,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_e599c779","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":33},"updated":"2019-02-27 14:58:57.000000000","message":"I guess we don\u0027t need to set default\u003dNone on requester_id since it\u0027ll just get set to None here if it\u0027s not loaded.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":44,"context_line":"        setattr(self, attr, None)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"    def obj_make_compatible(self, primitive, target_version):"},{"line_number":47,"context_line":"        super(InstancePCIRequest, self).obj_make_compatible(primitive,"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_97f56d85","line":44,"range":{"start_line":44,"start_character":8,"end_line":44,"end_character":33},"in_reply_to":"9fdfeff1_e599c779","updated":"2019-02-28 16:24:59.000000000","message":"I guess so.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                count\u003drequest[\u0027count\u0027], spec\u003drequest[\u0027spec\u0027],"},{"line_number":92,"context_line":"                alias_name\u003drequest[\u0027alias_name\u0027], is_new\u003dFalse,"},{"line_number":93,"context_line":"                request_id\u003drequest[\u0027request_id\u0027],"},{"line_number":94,"context_line":"                requester_id\u003drequest.get(\u0027requester_id\u0027, None))"},{"line_number":95,"context_line":"            request_obj.obj_reset_changes()"},{"line_number":96,"context_line":"            self.requests.append(request_obj)"},{"line_number":97,"context_line":"        self.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_c58e032d","line":94,"range":{"start_line":94,"start_character":55,"end_line":94,"end_character":61},"updated":"2019-02-27 14:58:57.000000000","message":"nit: this is redundant","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                count\u003drequest[\u0027count\u0027], spec\u003drequest[\u0027spec\u0027],"},{"line_number":92,"context_line":"                alias_name\u003drequest[\u0027alias_name\u0027], is_new\u003dFalse,"},{"line_number":93,"context_line":"                request_id\u003drequest[\u0027request_id\u0027],"},{"line_number":94,"context_line":"                requester_id\u003drequest.get(\u0027requester_id\u0027, None))"},{"line_number":95,"context_line":"            request_obj.obj_reset_changes()"},{"line_number":96,"context_line":"            self.requests.append(request_obj)"},{"line_number":97,"context_line":"        self.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_b7b43183","line":94,"range":{"start_line":94,"start_character":55,"end_line":94,"end_character":61},"in_reply_to":"9fdfeff1_c58e032d","updated":"2019-02-28 16:24:59.000000000","message":"Done","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        requests \u003d []"},{"line_number":113,"context_line":"        db_requests \u003d jsonutils.loads(sysmeta_value)"},{"line_number":114,"context_line":"        for db_request in db_requests:"},{"line_number":115,"context_line":"            request \u003d InstancePCIRequest("},{"line_number":116,"context_line":"                count\u003ddb_request[\u0027count\u0027], spec\u003ddb_request[\u0027spec\u0027],"},{"line_number":117,"context_line":"                alias_name\u003ddb_request[\u0027alias_name\u0027], is_new\u003dis_new)"},{"line_number":118,"context_line":"            request.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_6594f736","line":115,"range":{"start_line":115,"start_character":22,"end_line":115,"end_character":40},"updated":"2019-02-27 14:58:57.000000000","message":"I guess we don\u0027t care about this because if we get here we have a really old instance and it wouldn\u0027t have the requester_id anyway.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        requests \u003d []"},{"line_number":113,"context_line":"        db_requests \u003d jsonutils.loads(sysmeta_value)"},{"line_number":114,"context_line":"        for db_request in db_requests:"},{"line_number":115,"context_line":"            request \u003d InstancePCIRequest("},{"line_number":116,"context_line":"                count\u003ddb_request[\u0027count\u0027], spec\u003ddb_request[\u0027spec\u0027],"},{"line_number":117,"context_line":"                alias_name\u003ddb_request[\u0027alias_name\u0027], is_new\u003dis_new)"},{"line_number":118,"context_line":"            request.obj_reset_changes()"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_77b24996","line":115,"range":{"start_line":115,"start_character":22,"end_line":115,"end_character":40},"in_reply_to":"9fdfeff1_6594f736","updated":"2019-02-28 16:24:59.000000000","message":"Exactly. and the InstancePCIRequest will default the requester_id to None which is what we want in this case.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    def get_by_instance(cls, context, instance):"},{"line_number":124,"context_line":"        # NOTE (baoli): not all callers are passing instance as object yet."},{"line_number":125,"context_line":"        # Therefore, use the dict syntax in this routine"},{"line_number":126,"context_line":"        if \u0027pci_requests\u0027 in instance[\u0027system_metadata\u0027]:"},{"line_number":127,"context_line":"            # NOTE(danms): This instance hasn\u0027t been converted to use"},{"line_number":128,"context_line":"            # instance_extra yet, so extract the data from sysmeta"},{"line_number":129,"context_line":"            sysmeta \u003d instance[\u0027system_metadata\u0027]"},{"line_number":130,"context_line":"            _requests \u003d ("},{"line_number":131,"context_line":"                cls._load_legacy_requests(sysmeta[\u0027pci_requests\u0027]) +"},{"line_number":132,"context_line":"                cls._load_legacy_requests(sysmeta.get(\u0027new_pci_requests\u0027),"},{"line_number":133,"context_line":"                                          is_new\u003dTrue))"},{"line_number":134,"context_line":"            requests \u003d cls(instance_uuid\u003dinstance[\u0027uuid\u0027], requests\u003d_requests)"},{"line_number":135,"context_line":"            requests.obj_reset_changes()"},{"line_number":136,"context_line":"            return requests"},{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            return cls.get_by_instance_uuid(context, instance[\u0027uuid\u0027])"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_a58e5f24","line":136,"range":{"start_line":126,"start_character":8,"end_line":136,"end_character":27},"updated":"2019-02-27 14:58:57.000000000","message":"Eww I wonder when we can remove this, but I supposed we\u0027d need a blocker migration first...","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":123,"context_line":"    def get_by_instance(cls, context, instance):"},{"line_number":124,"context_line":"        # NOTE (baoli): not all callers are passing instance as object yet."},{"line_number":125,"context_line":"        # Therefore, use the dict syntax in this routine"},{"line_number":126,"context_line":"        if \u0027pci_requests\u0027 in instance[\u0027system_metadata\u0027]:"},{"line_number":127,"context_line":"            # NOTE(danms): This instance hasn\u0027t been converted to use"},{"line_number":128,"context_line":"            # instance_extra yet, so extract the data from sysmeta"},{"line_number":129,"context_line":"            sysmeta \u003d instance[\u0027system_metadata\u0027]"},{"line_number":130,"context_line":"            _requests \u003d ("},{"line_number":131,"context_line":"                cls._load_legacy_requests(sysmeta[\u0027pci_requests\u0027]) +"},{"line_number":132,"context_line":"                cls._load_legacy_requests(sysmeta.get(\u0027new_pci_requests\u0027),"},{"line_number":133,"context_line":"                                          is_new\u003dTrue))"},{"line_number":134,"context_line":"            requests \u003d cls(instance_uuid\u003dinstance[\u0027uuid\u0027], requests\u003d_requests)"},{"line_number":135,"context_line":"            requests.obj_reset_changes()"},{"line_number":136,"context_line":"            return requests"},{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            return cls.get_by_instance_uuid(context, instance[\u0027uuid\u0027])"},{"line_number":139,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_d7453570","line":136,"range":{"start_line":126,"start_character":8,"end_line":136,"end_character":27},"in_reply_to":"9fdfeff1_a58e5f24","updated":"2019-02-28 16:24:59.000000000","message":"yeah. uglyness.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"5659185df4831d8c530d9964f446960d1b8d25d2","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        # on major version bump"},{"line_number":37,"context_line":"        \u0027is_new\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":38,"context_line":"        \u0027request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"        \u0027requester_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027numa_policy\u0027: fields.PCINUMAAffinityPolicyField(nullable\u003dTrue),"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"9fdfeff1_8d9b1915","line":39,"updated":"2019-02-28 20:29:37.000000000","message":"another name for this might be \"requested_by\", which has the advantage that it\u0027s harder to mistake with \"request_id\" :)\n\nThis would follow a similar naming practice to fields like the instance\u0027s locked_by field:\n\nhttps://github.com/openstack/nova/blob/a8c065dea946599a1b07d003cd21409c4cd58df0/nova/objects/instance.py#L166","commit_id":"fc4010176a5e445a1e5d333bbbd3e273e2448e79"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"09f6f123dd830afa7a7742dc375214133b9d33ce","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        # on major version bump"},{"line_number":37,"context_line":"        \u0027is_new\u0027: fields.BooleanField(default\u003dFalse),"},{"line_number":38,"context_line":"        \u0027request_id\u0027: fields.UUIDField(nullable\u003dTrue),"},{"line_number":39,"context_line":"        \u0027requester_id\u0027: fields.StringField(nullable\u003dTrue),"},{"line_number":40,"context_line":"        \u0027numa_policy\u0027: fields.PCINUMAAffinityPolicyField(nullable\u003dTrue),"},{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"9fdfeff1_286f7192","line":39,"in_reply_to":"9fdfeff1_8d9b1915","updated":"2019-03-01 09:03:13.000000000","message":"Yeah good point. I would rename it but I used the same bad English when I named the matching parameter in the RequestGroup ovo. So now it is a bit about consistency.\nhttps://github.com/openstack/nova/blob/e6b949e8d63a467a1aa01386d596ce0fb0c9e512/nova/objects/request_spec.py#L1000","commit_id":"fc4010176a5e445a1e5d333bbbd3e273e2448e79"}],"nova/pci/request.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    if (\u0027extra_specs\u0027 in flavor and"},{"line_number":218,"context_line":"            \u0027pci_passthrough:alias\u0027 in flavor[\u0027extra_specs\u0027]):"},{"line_number":219,"context_line":"        pci_requests \u003d _translate_alias_to_requests("},{"line_number":220,"context_line":"            flavor[\u0027extra_specs\u0027][\u0027pci_passthrough:alias\u0027], flavor[\u0027id\u0027])"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    return objects.InstancePCIRequests(requests\u003dpci_requests)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_05d3ab02","line":220,"range":{"start_line":220,"start_character":60,"end_line":220,"end_character":72},"updated":"2019-02-27 14:58:57.000000000","message":"Yeah so I think this is wrong - glad I asked. This should be flavor.flavorid because that\u0027s the user-facing string version of the flavor, not the internal integer primary key. This would likely blow up with a TypeError or something if we had a functional test for this.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    if (\u0027extra_specs\u0027 in flavor and"},{"line_number":218,"context_line":"            \u0027pci_passthrough:alias\u0027 in flavor[\u0027extra_specs\u0027]):"},{"line_number":219,"context_line":"        pci_requests \u003d _translate_alias_to_requests("},{"line_number":220,"context_line":"            flavor[\u0027extra_specs\u0027][\u0027pci_passthrough:alias\u0027], flavor[\u0027id\u0027])"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    return objects.InstancePCIRequests(requests\u003dpci_requests)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_13143040","line":220,"range":{"start_line":220,"start_character":60,"end_line":220,"end_character":72},"in_reply_to":"9fdfeff1_05d3ab02","updated":"2019-02-28 16:24:59.000000000","message":"I keep the requester_id empty instead as nothing is using this info.\n\n17:07 \u003c mriedem\u003e you\u0027re ahead of your time","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"}],"nova/tests/unit/pci/test_request.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        self.flags(alias\u003d[_fake_alias1, _fake_alias3], group\u003d\u0027pci\u0027)"},{"line_number":210,"context_line":"        expect_request \u003d ["},{"line_number":211,"context_line":"            {\u0027count\u0027: 3,"},{"line_number":212,"context_line":"             \u0027requester_id\u0027: uuids.flavor_id,"},{"line_number":213,"context_line":"             \u0027spec\u0027: [{\u0027vendor_id\u0027: \u00278086\u0027, \u0027product_id\u0027: \u00274443\u0027,"},{"line_number":214,"context_line":"                       \u0027dev_type\u0027: \u0027type-PCI\u0027,"},{"line_number":215,"context_line":"                       \u0027capability_type\u0027: \u0027pci\u0027}],"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_85831bcb","line":212,"range":{"start_line":212,"start_character":35,"end_line":212,"end_character":44},"updated":"2019-02-27 14:58:57.000000000","message":"nit: use flavorid throughout because as noted in the commit message, flavor tests use flavor_id for flavor.id and flavorid for flavor.flavorid.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":209,"context_line":"        self.flags(alias\u003d[_fake_alias1, _fake_alias3], group\u003d\u0027pci\u0027)"},{"line_number":210,"context_line":"        expect_request \u003d ["},{"line_number":211,"context_line":"            {\u0027count\u0027: 3,"},{"line_number":212,"context_line":"             \u0027requester_id\u0027: uuids.flavor_id,"},{"line_number":213,"context_line":"             \u0027spec\u0027: [{\u0027vendor_id\u0027: \u00278086\u0027, \u0027product_id\u0027: \u00274443\u0027,"},{"line_number":214,"context_line":"                       \u0027dev_type\u0027: \u0027type-PCI\u0027,"},{"line_number":215,"context_line":"                       \u0027capability_type\u0027: \u0027pci\u0027}],"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_736c9ccf","line":212,"range":{"start_line":212,"start_character":35,"end_line":212,"end_character":44},"in_reply_to":"9fdfeff1_85831bcb","updated":"2019-02-28 16:24:59.000000000","message":"removed.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                       \u0027capability_type\u0027: \u0027pci\u0027}],"},{"line_number":272,"context_line":"             \u0027alias_name\u0027: \u0027IntelNIC\u0027}, ]"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        flavor \u003d {\u0027extra_specs\u0027: {\"pci_passthrough:alias\":"},{"line_number":275,"context_line":"                                  \" Cirrus Logic : 4, IntelNIC: 3\"},"},{"line_number":276,"context_line":"                  \u0027id\u0027: uuids.flavor_id}"},{"line_number":277,"context_line":"        requests \u003d request.get_pci_requests_from_flavor(flavor)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_a5c65f15","line":274,"range":{"start_line":274,"start_character":8,"end_line":274,"end_character":14},"updated":"2019-02-27 14:58:57.000000000","message":"nit: we should really be using a Flavor object for these tests because that\u0027s what the API passes to get_pci_requests_from_flavor but I realize it\u0027s a latent issue.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"99c0f0f3fca5b3d295cbe5e458838ba13f37c1c5","unresolved":false,"context_lines":[{"line_number":271,"context_line":"                       \u0027capability_type\u0027: \u0027pci\u0027}],"},{"line_number":272,"context_line":"             \u0027alias_name\u0027: \u0027IntelNIC\u0027}, ]"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        flavor \u003d {\u0027extra_specs\u0027: {\"pci_passthrough:alias\":"},{"line_number":275,"context_line":"                                  \" Cirrus Logic : 4, IntelNIC: 3\"},"},{"line_number":276,"context_line":"                  \u0027id\u0027: uuids.flavor_id}"},{"line_number":277,"context_line":"        requests \u003d request.get_pci_requests_from_flavor(flavor)"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_05a40b4a","line":274,"range":{"start_line":274,"start_character":8,"end_line":274,"end_character":14},"in_reply_to":"9fdfeff1_a5c65f15","updated":"2019-02-27 15:00:19.000000000","message":"Having said that, you\u0027d have spotted the error earlier if you tried setting a test Flavor.id to a string.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f3561bea2f6d1dd2400814c2f119627f6e51c621","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        flavor \u003d {\u0027extra_specs\u0027: {\"pci_passthrough:alias\":"},{"line_number":275,"context_line":"                                  \" Cirrus Logic : 4, IntelNIC: 3\"},"},{"line_number":276,"context_line":"                  \u0027id\u0027: uuids.flavor_id}"},{"line_number":277,"context_line":"        requests \u003d request.get_pci_requests_from_flavor(flavor)"},{"line_number":278,"context_line":"        self.assertEqual(set([3, 4]),"},{"line_number":279,"context_line":"                         set([p.count for p in requests.requests]))"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_c5660352","line":276,"range":{"start_line":276,"start_character":19,"end_line":276,"end_character":21},"updated":"2019-02-27 14:58:57.000000000","message":"This should be flavorid.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"9c72ff59f6f117b4110b8b9dd4a021e5aff46bf5","unresolved":false,"context_lines":[{"line_number":273,"context_line":""},{"line_number":274,"context_line":"        flavor \u003d {\u0027extra_specs\u0027: {\"pci_passthrough:alias\":"},{"line_number":275,"context_line":"                                  \" Cirrus Logic : 4, IntelNIC: 3\"},"},{"line_number":276,"context_line":"                  \u0027id\u0027: uuids.flavor_id}"},{"line_number":277,"context_line":"        requests \u003d request.get_pci_requests_from_flavor(flavor)"},{"line_number":278,"context_line":"        self.assertEqual(set([3, 4]),"},{"line_number":279,"context_line":"                         set([p.count for p in requests.requests]))"}],"source_content_type":"text/x-python","patch_set":25,"id":"9fdfeff1_f3b40c38","line":276,"range":{"start_line":276,"start_character":19,"end_line":276,"end_character":21},"in_reply_to":"9fdfeff1_c5660352","updated":"2019-02-28 16:24:59.000000000","message":"removed.","commit_id":"1aca2efd1f6fe2a65383deec68c964c90068f426"}]}
