)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add get_instance_pci_request_from_vif"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This Change extends request.py with a method"},{"line_number":10,"context_line":"that retrieves an instance\u0027s pci request from a given VIF"},{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_4a3b9238","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":11},"updated":"2019-03-05 01:53:17.000000000","message":"change","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add get_instance_pci_request_from_vif"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This Change extends request.py with a method"},{"line_number":10,"context_line":"that retrieves an instance\u0027s pci request from a given VIF"},{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_8a0ada76","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":30},"updated":"2019-03-05 01:53:17.000000000","message":"nova/pci/request.py","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add get_instance_pci_request_from_vif"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This Change extends request.py with a method"},{"line_number":10,"context_line":"that retrieves an instance\u0027s pci request from a given VIF"},{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_500efce5","line":9,"range":{"start_line":9,"start_character":5,"end_line":9,"end_character":11},"in_reply_to":"9fdfeff1_4a3b9238","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add get_instance_pci_request_from_vif"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This Change extends request.py with a method"},{"line_number":10,"context_line":"that retrieves an instance\u0027s pci request from a given VIF"},{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_b00960de","line":9,"range":{"start_line":9,"start_character":20,"end_line":9,"end_character":30},"in_reply_to":"9fdfeff1_8a0ada76","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add get_instance_pci_request_from_vif"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This Change extends request.py with a method"},{"line_number":10,"context_line":"that retrieves an instance\u0027s pci request from a given VIF"},{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_aa36be50","line":10,"range":{"start_line":10,"start_character":29,"end_line":10,"end_character":32},"updated":"2019-03-05 01:53:17.000000000","message":"please use PCI, as you do elsewhere.","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add get_instance_pci_request_from_vif"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This Change extends request.py with a method"},{"line_number":10,"context_line":"that retrieves an instance\u0027s pci request from a given VIF"},{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_7013f80e","line":10,"range":{"start_line":10,"start_character":29,"end_line":10,"end_character":32},"in_reply_to":"9fdfeff1_aa36be50","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"the PCI request,if retrieved, belongs to a PCI device"},{"line_number":15,"context_line":"in the compute node where the instance is marked as running from."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The change is required to facilitate SR-IOV live migration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_6a38d63a","line":14,"range":{"start_line":14,"start_character":14,"end_line":14,"end_character":20},"updated":"2019-03-05 01:53:17.000000000","message":"request, if retrieved","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":11,"context_line":"if the given VIF required a PCI allocation during instance"},{"line_number":12,"context_line":"creation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"the PCI request,if retrieved, belongs to a PCI device"},{"line_number":15,"context_line":"in the compute node where the instance is marked as running from."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The change is required to facilitate SR-IOV live migration"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_10f874c2","line":14,"range":{"start_line":14,"start_character":14,"end_line":14,"end_character":20},"in_reply_to":"9fdfeff1_6a38d63a","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":12,"context_line":"creation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"the PCI request,if retrieved, belongs to a PCI device"},{"line_number":15,"context_line":"in the compute node where the instance is marked as running from."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The change is required to facilitate SR-IOV live migration"},{"line_number":18,"context_line":"allowing to claim VIF related PCI resources on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9fdfeff1_0a458ab4","line":15,"range":{"start_line":15,"start_character":60,"end_line":15,"end_character":64},"updated":"2019-03-05 01:53:17.000000000","message":"s/is marked as running from/is running/","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":12,"context_line":"creation."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"the PCI request,if retrieved, belongs to a PCI device"},{"line_number":15,"context_line":"in the compute node where the instance is marked as running from."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"The change is required to facilitate SR-IOV live migration"},{"line_number":18,"context_line":"allowing to claim VIF related PCI resources on"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"5fc1f717_30f570cc","line":15,"range":{"start_line":15,"start_character":60,"end_line":15,"end_character":64},"in_reply_to":"9fdfeff1_0a458ab4","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"}],"nova/exception.py":[{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ec8811130673a31bf35529e62a6b2d5e3c6fd741","unresolved":false,"context_lines":[{"line_number":1800,"context_line":""},{"line_number":1801,"context_line":"class PciRequestFromVIFNotFound(NotFound):"},{"line_number":1802,"context_line":"    msg_fmt \u003d _(\"Failed to locate PCI request associated with the given VIF \""},{"line_number":1803,"context_line":"                \"PCI address: %(pci_slot)s on Node(ID\u003d%(node_id)s)\")"},{"line_number":1804,"context_line":""},{"line_number":1805,"context_line":""},{"line_number":1806,"context_line":"# Cannot be templated, msg needs to be constructed when raised."}],"source_content_type":"text/x-python","patch_set":11,"id":"9fdfeff1_ac27b112","line":1803,"range":{"start_line":1803,"start_character":46,"end_line":1803,"end_character":65},"updated":"2019-02-05 19:38:59.000000000","message":"just put Node ID: %(node_id)s","commit_id":"60a772b4a11512f3d7d591367fc7a1735e4b2515"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ec8811130673a31bf35529e62a6b2d5e3c6fd741","unresolved":false,"context_lines":[{"line_number":1806,"context_line":""},{"line_number":1807,"context_line":"class PciRequestFromVIFNotFound(NotFound):"},{"line_number":1808,"context_line":"    msg_fmt \u003d _(\"Failed to locate PCI request associated with the given VIF \""},{"line_number":1809,"context_line":"                \"PCI address: %(pci_slot)s on Node(ID\u003d%(node_id)s)\")"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"# Cannot be templated, msg needs to be constructed when raised."}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_6f39d2f0","line":1809,"range":{"start_line":1809,"start_character":45,"end_line":1809,"end_character":63},"updated":"2019-02-05 19:38:59.000000000","message":"why not just \"node id: %(node_id)s\" to be consistent with the other exception","commit_id":"c5bb7b5dd4175d5017449de680895120942a36dc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b56fe22afac6ea3a67d81699da8cdc1081bcb28","unresolved":false,"context_lines":[{"line_number":1806,"context_line":""},{"line_number":1807,"context_line":"class PciRequestFromVIFNotFound(NotFound):"},{"line_number":1808,"context_line":"    msg_fmt \u003d _(\"Failed to locate PCI request associated with the given VIF \""},{"line_number":1809,"context_line":"                \"PCI address: %(pci_slot)s on Node(ID\u003d%(node_id)s)\")"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":""},{"line_number":1812,"context_line":"# Cannot be templated, msg needs to be constructed when raised."}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_4e4bafaf","line":1809,"range":{"start_line":1809,"start_character":45,"end_line":1809,"end_character":63},"in_reply_to":"9fdfeff1_6f39d2f0","updated":"2019-02-05 20:54:29.000000000","message":"Node(ID\u003dx) implies a class called Node with a field calld ID with value \"x\" based on the python guidence for how to create\n__repr__ methods\n\ni think moshe is right  \"node id: %(node_id)s\"  is likely better.","commit_id":"c5bb7b5dd4175d5017449de680895120942a36dc"}],"nova/pci/request.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"eceb825cc811e72b54bfe086cc91a717504949e6","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    :return: instance\u0027s PCIRequest object associated with the given VIF or None"},{"line_number":217,"context_line":"    \"\"\""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    vif_pci_dev_address \u003d None"},{"line_number":220,"context_line":"    vif_profile \u003d vif.get(\u0027profile\u0027, None)"},{"line_number":221,"context_line":"    if vif_profile:"},{"line_number":222,"context_line":"        vif_pci_dev_address \u003d vif_profile.get(\u0027pci_slot\u0027, None)"},{"line_number":223,"context_line":"    vif_pci_request \u003d None"},{"line_number":224,"context_line":"    if vif_pci_dev_address:"},{"line_number":225,"context_line":"        # Find PCIDevice associated with vif_pci_dev_address"},{"line_number":226,"context_line":"        vif_pci_dev \u003d None"},{"line_number":227,"context_line":"        for pci_dev in instance.pci_devices:"},{"line_number":228,"context_line":"            if pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":229,"context_line":"                vif_pci_dev \u003d pci_dev"},{"line_number":230,"context_line":"        if vif_pci_dev:"},{"line_number":231,"context_line":"            # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":232,"context_line":"            for pci_request in instance.pci_requests.requests:"},{"line_number":233,"context_line":"                if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":234,"context_line":"                    vif_pci_request \u003d pci_request"},{"line_number":235,"context_line":"        if vif_pci_request is None:"},{"line_number":236,"context_line":"            LOG.error(\"Failed to locate PCI request associated with\""},{"line_number":237,"context_line":"                      \" the given VIF PCI address: %s\", vif_pci_dev_address)"},{"line_number":238,"context_line":"    return vif_pci_request"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_01e4f0a5","line":237,"range":{"start_line":219,"start_character":3,"end_line":237,"end_character":76},"updated":"2018-11-26 19:37:36.000000000","message":"im not sure this is sufficent.\n\ni think we will need to take into account what host the vif is bound to handel the migration case. other wise this will only work if we dont use the multiple port binding feature.\n\nsince we want to use that feature this will be ambigious if \nthe pci address of the vif did not change as part of the migfation.\n\nideally we should probably avoid using the pci_slot entirely if we can and look it up based on other critiera such as the instace vif and host.\n\nthat said im not sure we can do that today.","commit_id":"33aa1ec50a6733c30faeabd2f1b345b447498a7e"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"348bc3e6de58a7252d12ac4355564bec49b160ef","unresolved":false,"context_lines":[{"line_number":216,"context_line":"    :return: instance\u0027s PCIRequest object associated with the given VIF or None"},{"line_number":217,"context_line":"    \"\"\""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    vif_pci_dev_address \u003d None"},{"line_number":220,"context_line":"    vif_profile \u003d vif.get(\u0027profile\u0027, None)"},{"line_number":221,"context_line":"    if vif_profile:"},{"line_number":222,"context_line":"        vif_pci_dev_address \u003d vif_profile.get(\u0027pci_slot\u0027, None)"},{"line_number":223,"context_line":"    vif_pci_request \u003d None"},{"line_number":224,"context_line":"    if vif_pci_dev_address:"},{"line_number":225,"context_line":"        # Find PCIDevice associated with vif_pci_dev_address"},{"line_number":226,"context_line":"        vif_pci_dev \u003d None"},{"line_number":227,"context_line":"        for pci_dev in instance.pci_devices:"},{"line_number":228,"context_line":"            if pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":229,"context_line":"                vif_pci_dev \u003d pci_dev"},{"line_number":230,"context_line":"        if vif_pci_dev:"},{"line_number":231,"context_line":"            # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":232,"context_line":"            for pci_request in instance.pci_requests.requests:"},{"line_number":233,"context_line":"                if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":234,"context_line":"                    vif_pci_request \u003d pci_request"},{"line_number":235,"context_line":"        if vif_pci_request is None:"},{"line_number":236,"context_line":"            LOG.error(\"Failed to locate PCI request associated with\""},{"line_number":237,"context_line":"                      \" the given VIF PCI address: %s\", vif_pci_dev_address)"},{"line_number":238,"context_line":"    return vif_pci_request"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3f79a3b5_5b90824c","line":237,"range":{"start_line":219,"start_character":3,"end_line":237,"end_character":76},"in_reply_to":"3f79a3b5_01e4f0a5","updated":"2018-11-27 14:13:33.000000000","message":"this is being called before the port is bound on the destination, so i dont think this can affect the migration case.\n\ni also assume that the provided vif is one of the vifs returned from instance.get_network_info() perhaps i should clarify in the docstring and add a check in the code ?\nAlternatively modify the method provide the vif[\u0027id\u0027] as input instead of the vif itself?\n\ncan you elaborate the use-case where it will fail ?\n\nwhat i can think of is that it will return a faulty result if the instance has for example:\ntwo PCI devices allocated on two different nodes with the same PCI device address when each PCI device has a separate PCI request ID.","commit_id":"33aa1ec50a6733c30faeabd2f1b345b447498a7e"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    compute node the instance is currently running."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    In this method we assume a VIF is associated with a PCI device"},{"line_number":180,"context_line":"    iff \u0027pci_slot\u0027 attribute exists in the vif \u0027profile\u0027 dict."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    :param context: security context"},{"line_number":183,"context_line":"    :param instance: instance object"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_a181e14c","line":180,"range":{"start_line":180,"start_character":4,"end_line":180,"end_character":7},"updated":"2019-01-09 18:14:06.000000000","message":"if","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":177,"context_line":"    compute node the instance is currently running."},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    In this method we assume a VIF is associated with a PCI device"},{"line_number":180,"context_line":"    iff \u0027pci_slot\u0027 attribute exists in the vif \u0027profile\u0027 dict."},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    :param context: security context"},{"line_number":183,"context_line":"    :param instance: instance object"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_1d77103d","line":180,"range":{"start_line":180,"start_character":4,"end_line":180,"end_character":7},"in_reply_to":"dfd5e7cf_a181e14c","updated":"2019-01-15 11:17:37.000000000","message":"I referred to the \"if and only if\" statement, but we can get by with only one direction of the statement:\n\"VIF associated with PCI device if and only if \u0027pci_slot\u0027 attribute exists in the vif \u0027profile\u0027 dict\"","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    :param vif: network VIF model object"},{"line_number":185,"context_line":"    :return: instance\u0027s PCIRequest object associated with the given VIF or None"},{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    vif_pci_request \u003d None"},{"line_number":189,"context_line":"    vif_profile \u003d vif.get(\u0027profile\u0027, None)"},{"line_number":190,"context_line":"    vif_pci_dev_address \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_41411539","line":187,"updated":"2019-01-09 18:14:06.000000000","message":"nit: you could shortcut all of this with:\n\n  vif_pci_dev_address \u003d vif.get(\u0027profile\u0027, {}).get(\u0027pci_slot\u0027)\n  if not vif_pci_dev_address:\n      return\n\n  inst_compute_node \u003d compute_node_objs.ComputeNode.\\\n      get_by_host_and_nodename(context, instance.host, instance.node)\n  ...","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    :param vif: network VIF model object"},{"line_number":185,"context_line":"    :return: instance\u0027s PCIRequest object associated with the given VIF or None"},{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    vif_pci_request \u003d None"},{"line_number":189,"context_line":"    vif_profile \u003d vif.get(\u0027profile\u0027, None)"},{"line_number":190,"context_line":"    vif_pci_dev_address \u003d None"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_5db1188f","line":187,"in_reply_to":"dfd5e7cf_41411539","updated":"2019-01-15 11:17:37.000000000","message":"it will not work because nova.network.model.VIF always defines the \u0027profile\u0027 attribute with None as default value,\n\ni went with an \u0027var \u003d A if \u003ccondition\u003e else B\u0027 statement","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    vif_pci_request \u003d None"},{"line_number":189,"context_line":"    vif_profile \u003d vif.get(\u0027profile\u0027, None)"},{"line_number":190,"context_line":"    vif_pci_dev_address \u003d None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    if vif_profile:"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_e150490d","line":189,"range":{"start_line":189,"start_character":35,"end_line":189,"end_character":41},"updated":"2019-01-09 18:14:06.000000000","message":"nit: think this might unnecessary (.get defaults to None)","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    vif_pci_request \u003d None"},{"line_number":189,"context_line":"    vif_profile \u003d vif.get(\u0027profile\u0027, None)"},{"line_number":190,"context_line":"    vif_pci_dev_address \u003d None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    if vif_profile:"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_7d73bce8","line":189,"range":{"start_line":189,"start_character":35,"end_line":189,"end_character":41},"in_reply_to":"dfd5e7cf_e150490d","updated":"2019-01-15 11:17:37.000000000","message":"Done","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        inst_compute_node_id \u003d inst_compute_node.id"},{"line_number":201,"context_line":"        vif_pci_dev \u003d None"},{"line_number":202,"context_line":"        for pci_dev in instance.pci_devices:"},{"line_number":203,"context_line":"            if pci_dev.compute_node_id \u003d\u003d inst_compute_node_id and \\"},{"line_number":204,"context_line":"                    pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":205,"context_line":"                vif_pci_dev \u003d pci_dev"},{"line_number":206,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_e19e09b7","line":203,"range":{"start_line":203,"start_character":42,"end_line":203,"end_character":62},"updated":"2019-01-09 18:14:06.000000000","message":"Just use \u0027inst_compute_node.id\u0027","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":200,"context_line":"        inst_compute_node_id \u003d inst_compute_node.id"},{"line_number":201,"context_line":"        vif_pci_dev \u003d None"},{"line_number":202,"context_line":"        for pci_dev in instance.pci_devices:"},{"line_number":203,"context_line":"            if pci_dev.compute_node_id \u003d\u003d inst_compute_node_id and \\"},{"line_number":204,"context_line":"                    pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":205,"context_line":"                vif_pci_dev \u003d pci_dev"},{"line_number":206,"context_line":"                break"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_1d80708b","line":203,"range":{"start_line":203,"start_character":42,"end_line":203,"end_character":62},"in_reply_to":"dfd5e7cf_e19e09b7","updated":"2019-01-15 11:17:37.000000000","message":"Done","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":209,"context_line":"            for pci_request in instance.pci_requests.requests:"},{"line_number":210,"context_line":"                if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":211,"context_line":"                    vif_pci_request \u003d pci_request"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            LOG.error(\"Failed to locate PCI request associated with\""},{"line_number":214,"context_line":"                      \" the given VIF PCI address: %s on Node(ID\u003d%d)\","}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_61aa19d3","line":211,"range":{"start_line":211,"start_character":20,"end_line":211,"end_character":49},"updated":"2019-01-09 18:14:06.000000000","message":"break?","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":208,"context_line":"            # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":209,"context_line":"            for pci_request in instance.pci_requests.requests:"},{"line_number":210,"context_line":"                if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":211,"context_line":"                    vif_pci_request \u003d pci_request"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            LOG.error(\"Failed to locate PCI request associated with\""},{"line_number":214,"context_line":"                      \" the given VIF PCI address: %s on Node(ID\u003d%d)\","}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_783d0aba","line":211,"range":{"start_line":211,"start_character":20,"end_line":211,"end_character":49},"in_reply_to":"dfd5e7cf_61aa19d3","updated":"2019-01-15 11:17:37.000000000","message":"Done","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":211,"context_line":"                    vif_pci_request \u003d pci_request"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            LOG.error(\"Failed to locate PCI request associated with\""},{"line_number":214,"context_line":"                      \" the given VIF PCI address: %s on Node(ID\u003d%d)\","},{"line_number":215,"context_line":"                      vif_pci_dev_address, inst_compute_node_id)"},{"line_number":216,"context_line":"    return vif_pci_request"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_41afd5e2","line":215,"range":{"start_line":213,"start_character":0,"end_line":215,"end_character":64},"updated":"2019-01-09 18:14:06.000000000","message":"Do we want to fail in any way here?","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":211,"context_line":"                    vif_pci_request \u003d pci_request"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            LOG.error(\"Failed to locate PCI request associated with\""},{"line_number":214,"context_line":"                      \" the given VIF PCI address: %s on Node(ID\u003d%d)\","},{"line_number":215,"context_line":"                      vif_pci_dev_address, inst_compute_node_id)"},{"line_number":216,"context_line":"    return vif_pci_request"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_780f4a2e","line":215,"range":{"start_line":213,"start_character":0,"end_line":215,"end_character":64},"in_reply_to":"dfd5e7cf_41afd5e2","updated":"2019-01-15 11:17:37.000000000","message":"I reckon we do, will raise exception and add a unit test.","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":12171,"name":"Moshe Levi","email":"moshele@nvidia.com","username":"moshele"},"change_message_id":"ec8811130673a31bf35529e62a6b2d5e3c6fd741","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    :param instance: instance object"},{"line_number":181,"context_line":"    :param vif: network VIF model object"},{"line_number":182,"context_line":"    :return: instance\u0027s PCIRequest object associated with the given VIF or None"},{"line_number":183,"context_line":"    \"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    # Get PCI device address for VIF if exists"},{"line_number":186,"context_line":"    vif_pci_dev_address \u003d vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) \\"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_cbf6b1fa","line":183,"updated":"2019-02-05 19:38:59.000000000","message":"please update the doc string when you with :raises as well.\nAlso you should clarify when you return None (when VIF don\u0027t have pci_slot)","commit_id":"c5bb7b5dd4175d5017449de680895120942a36dc"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3b56fe22afac6ea3a67d81699da8cdc1081bcb28","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    :param instance: instance object"},{"line_number":181,"context_line":"    :param vif: network VIF model object"},{"line_number":182,"context_line":"    :return: instance\u0027s PCIRequest object associated with the given VIF or None"},{"line_number":183,"context_line":"    \"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    # Get PCI device address for VIF if exists"},{"line_number":186,"context_line":"    vif_pci_dev_address \u003d vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) \\"}],"source_content_type":"text/x-python","patch_set":15,"id":"9fdfeff1_8eff5733","line":183,"in_reply_to":"9fdfeff1_cbf6b1fa","updated":"2019-02-05 20:54:29.000000000","message":"ya this is valid too i guess.\ni am collecting up all these nits across the patches and will probably just respin them all shortly","commit_id":"c5bb7b5dd4175d5017449de680895120942a36dc"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"faf9f9722034a6b3b823637f641526fdf38afe24","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    # Get PCI device address for VIF if exists"},{"line_number":189,"context_line":"    vif_pci_dev_address \u003d vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) \\"},{"line_number":190,"context_line":"        if vif[\u0027profile\u0027] else None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    if not vif_pci_dev_address:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_f47bfbf0","line":189,"range":{"start_line":189,"start_character":57,"end_line":189,"end_character":58},"updated":"2019-02-11 18:20:38.000000000","message":"Once you need to do this, I think it\u0027s a sign that you should just use an if statement. Alternatively, and I think I might have suggested this before:\n\n    vif_pci_dev_address \u003d vif.get(\u0027profile\u0027, {}).get(\u0027pci_slot\u0027, None)","commit_id":"39f7e163c027a7f561a07651484b4bef07035174"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7fb6f936491aaa0d2f93e69bdfa9edf62d27bdf2","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    # Get PCI device address for VIF if exists"},{"line_number":189,"context_line":"    vif_pci_dev_address \u003d vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) \\"},{"line_number":190,"context_line":"        if vif[\u0027profile\u0027] else None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    if not vif_pci_dev_address:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_5a345793","line":189,"range":{"start_line":189,"start_character":57,"end_line":189,"end_character":58},"in_reply_to":"9fdfeff1_411eb9bb","updated":"2019-02-12 17:13:26.000000000","message":"Well then :) At least I\u0027m consistent?","commit_id":"39f7e163c027a7f561a07651484b4bef07035174"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"83dd8c4b4e765cebd2f41c0e5547989b3933ab0e","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    \"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    # Get PCI device address for VIF if exists"},{"line_number":189,"context_line":"    vif_pci_dev_address \u003d vif[\u0027profile\u0027].get(\u0027pci_slot\u0027) \\"},{"line_number":190,"context_line":"        if vif[\u0027profile\u0027] else None"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    if not vif_pci_dev_address:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9fdfeff1_411eb9bb","line":189,"range":{"start_line":189,"start_character":57,"end_line":189,"end_character":58},"in_reply_to":"9fdfeff1_f47bfbf0","updated":"2019-02-12 11:47:32.000000000","message":"you did and i replied :)\n\n\"\nit will not work because nova.network.model.VIF always defines the \u0027profile\u0027 attribute with None as default value,\n\ni went with an \u0027var \u003d A if \u003ccondition\u003e else B\u0027 statement\n\"","commit_id":"39f7e163c027a7f561a07651484b4bef07035174"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from nova.i18n import _"},{"line_number":48,"context_line":"from nova.network import model as network_model"},{"line_number":49,"context_line":"from nova import objects"},{"line_number":50,"context_line":"from nova.objects import compute_node as compute_node_objs"},{"line_number":51,"context_line":"from nova.objects import fields as obj_fields"},{"line_number":52,"context_line":"from nova.pci import utils"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_0a1eeaba","line":50,"updated":"2019-03-05 01:53:17.000000000","message":"this import isn\u0027t needed. Below, simply do:\n\n inst_compute_node \u003d objects.ComputeNode.get_by_host_and_nodename(...)","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from nova.i18n import _"},{"line_number":48,"context_line":"from nova.network import model as network_model"},{"line_number":49,"context_line":"from nova import objects"},{"line_number":50,"context_line":"from nova.objects import compute_node as compute_node_objs"},{"line_number":51,"context_line":"from nova.objects import fields as obj_fields"},{"line_number":52,"context_line":"from nova.pci import utils"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_e6bac0dc","line":50,"in_reply_to":"5fc1f717_55f26e08","updated":"2019-03-07 02:11:12.000000000","message":"Been saying that for at least 5 revisions now :D","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"19198c09a9833d1e6e623d9964ca802c4e582cde","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from nova.i18n import _"},{"line_number":48,"context_line":"from nova.network import model as network_model"},{"line_number":49,"context_line":"from nova import objects"},{"line_number":50,"context_line":"from nova.objects import compute_node as compute_node_objs"},{"line_number":51,"context_line":"from nova.objects import fields as obj_fields"},{"line_number":52,"context_line":"from nova.pci import utils"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_9398db6a","line":50,"in_reply_to":"5fc1f717_e6bac0dc","updated":"2019-03-07 07:46:46.000000000","message":"peer pressure what can i say :P","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":47,"context_line":"from nova.i18n import _"},{"line_number":48,"context_line":"from nova.network import model as network_model"},{"line_number":49,"context_line":"from nova import objects"},{"line_number":50,"context_line":"from nova.objects import compute_node as compute_node_objs"},{"line_number":51,"context_line":"from nova.objects import fields as obj_fields"},{"line_number":52,"context_line":"from nova.pci import utils"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_55f26e08","line":50,"in_reply_to":"9fdfeff1_0a1eeaba","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    # Find PCIDevice associated with vif_pci_dev_address on the compute"},{"line_number":196,"context_line":"    # the instance is running on."},{"line_number":197,"context_line":"    vif_pci_request \u003d None"},{"line_number":198,"context_line":"    inst_compute_node \u003d compute_node_objs.ComputeNode.\\"},{"line_number":199,"context_line":"        get_by_host_and_nodename(context, instance.host, instance.node)"},{"line_number":200,"context_line":"    vif_pci_dev \u003d None"},{"line_number":201,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":202,"context_line":"        if pci_dev.compute_node_id \u003d\u003d inst_compute_node.id and \\"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_8a42da67","line":199,"range":{"start_line":198,"start_character":4,"end_line":199,"end_character":71},"updated":"2019-03-05 01:53:17.000000000","message":"unlikely, but ComputeNode.get_by_host_and_nodename() can fail...","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":195,"context_line":"    # Find PCIDevice associated with vif_pci_dev_address on the compute"},{"line_number":196,"context_line":"    # the instance is running on."},{"line_number":197,"context_line":"    vif_pci_request \u003d None"},{"line_number":198,"context_line":"    inst_compute_node \u003d compute_node_objs.ComputeNode.\\"},{"line_number":199,"context_line":"        get_by_host_and_nodename(context, instance.host, instance.node)"},{"line_number":200,"context_line":"    vif_pci_dev \u003d None"},{"line_number":201,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":202,"context_line":"        if pci_dev.compute_node_id \u003d\u003d inst_compute_node.id and \\"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_f0b4c837","line":199,"range":{"start_line":198,"start_character":4,"end_line":199,"end_character":71},"in_reply_to":"9fdfeff1_8a42da67","updated":"2019-03-06 14:02:21.000000000","message":"Done","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"36439e31d086318b174ab8f7f9d22a1cfcf9e0a2","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    if not vif_pci_dev_address:"},{"line_number":193,"context_line":"        return None"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # Find PCIDevice associated with vif_pci_dev_address on the compute"},{"line_number":196,"context_line":"    # the instance is running on."},{"line_number":197,"context_line":"    vif_pci_request \u003d None"},{"line_number":198,"context_line":"    inst_compute_node \u003d compute_node_objs.ComputeNode.\\"},{"line_number":199,"context_line":"        get_by_host_and_nodename(context, instance.host, instance.node)"},{"line_number":200,"context_line":"    vif_pci_dev \u003d None"},{"line_number":201,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":202,"context_line":"        if pci_dev.compute_node_id \u003d\u003d inst_compute_node.id and \\"},{"line_number":203,"context_line":"                pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":204,"context_line":"            vif_pci_dev \u003d pci_dev"},{"line_number":205,"context_line":"            break"},{"line_number":206,"context_line":"    if vif_pci_dev:"},{"line_number":207,"context_line":"        # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":208,"context_line":"        for pci_request in instance.pci_requests.requests:"},{"line_number":209,"context_line":"            if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":210,"context_line":"                vif_pci_request \u003d pci_request"},{"line_number":211,"context_line":"                break"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            raise exception.PciRequestFromVIFNotFound("},{"line_number":214,"context_line":"                pci_slot\u003dvif_pci_dev_address,"},{"line_number":215,"context_line":"                node_id\u003dinst_compute_node.id)"},{"line_number":216,"context_line":"    return vif_pci_request"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"def get_pci_requests_from_flavor(flavor):"}],"source_content_type":"text/x-python","patch_set":21,"id":"9fdfeff1_2aa5ee47","line":216,"range":{"start_line":195,"start_character":0,"end_line":216,"end_character":26},"updated":"2019-03-05 01:53:17.000000000","message":"you could make the above more readable using a combination of short-circuiting and different variable names:\n\n try:\n     cn_id \u003d objects.ComputeNode.get_by_host_and_nodename(\n         context, instance.host, instance.node).id\n except exception.NotFound:\n     LOG.warning(\"expected to find compute node with host %s\"\n                 \" and node %s when getting instance PCI request \"\n                 \" from VIF\")\n     return None\n vif_addr \u003d vif_pci_dev_address\n\n # Find PCIDevice associated with vif_pci_dev_address on the compute\n # the instance is running on.\n found_dev \u003d None\n for dev in instance.pci_devices:\n     if dev.compute_node_id \u003d\u003d cn_id and dev.address \u003d\u003d vif_addr:\n         found_dev \u003d dev\n         break\n if not found_dev:\n     return None\n\n # Find PCIRequest associated with the given PCIDevice in instance\n for req in instance.pci_requests.requests:\n     if req.request_id \u003d\u003d found_dev.request_id:\n         return req\n\n raise exception.PciRequestFromVIFNotFound(\n     pci_slot\u003dvif_pci_dev_address,\n     node_id\u003dcompute_node.id)","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    if not vif_pci_dev_address:"},{"line_number":193,"context_line":"        return None"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # Find PCIDevice associated with vif_pci_dev_address on the compute"},{"line_number":196,"context_line":"    # the instance is running on."},{"line_number":197,"context_line":"    vif_pci_request \u003d None"},{"line_number":198,"context_line":"    inst_compute_node \u003d compute_node_objs.ComputeNode.\\"},{"line_number":199,"context_line":"        get_by_host_and_nodename(context, instance.host, instance.node)"},{"line_number":200,"context_line":"    vif_pci_dev \u003d None"},{"line_number":201,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":202,"context_line":"        if pci_dev.compute_node_id \u003d\u003d inst_compute_node.id and \\"},{"line_number":203,"context_line":"                pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":204,"context_line":"            vif_pci_dev \u003d pci_dev"},{"line_number":205,"context_line":"            break"},{"line_number":206,"context_line":"    if vif_pci_dev:"},{"line_number":207,"context_line":"        # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":208,"context_line":"        for pci_request in instance.pci_requests.requests:"},{"line_number":209,"context_line":"            if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":210,"context_line":"                vif_pci_request \u003d pci_request"},{"line_number":211,"context_line":"                break"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            raise exception.PciRequestFromVIFNotFound("},{"line_number":214,"context_line":"                pci_slot\u003dvif_pci_dev_address,"},{"line_number":215,"context_line":"                node_id\u003dinst_compute_node.id)"},{"line_number":216,"context_line":"    return vif_pci_request"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"def get_pci_requests_from_flavor(flavor):"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_66c6d06a","line":216,"range":{"start_line":195,"start_character":0,"end_line":216,"end_character":26},"in_reply_to":"5fc1f717_70821852","updated":"2019-03-07 02:11:12.000000000","message":"short circuiting ftw","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2c39daa338b974f835b3441ad5d5b6f740fe4697","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    if not vif_pci_dev_address:"},{"line_number":193,"context_line":"        return None"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    # Find PCIDevice associated with vif_pci_dev_address on the compute"},{"line_number":196,"context_line":"    # the instance is running on."},{"line_number":197,"context_line":"    vif_pci_request \u003d None"},{"line_number":198,"context_line":"    inst_compute_node \u003d compute_node_objs.ComputeNode.\\"},{"line_number":199,"context_line":"        get_by_host_and_nodename(context, instance.host, instance.node)"},{"line_number":200,"context_line":"    vif_pci_dev \u003d None"},{"line_number":201,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":202,"context_line":"        if pci_dev.compute_node_id \u003d\u003d inst_compute_node.id and \\"},{"line_number":203,"context_line":"                pci_dev.address \u003d\u003d vif_pci_dev_address:"},{"line_number":204,"context_line":"            vif_pci_dev \u003d pci_dev"},{"line_number":205,"context_line":"            break"},{"line_number":206,"context_line":"    if vif_pci_dev:"},{"line_number":207,"context_line":"        # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":208,"context_line":"        for pci_request in instance.pci_requests.requests:"},{"line_number":209,"context_line":"            if pci_request.request_id \u003d\u003d vif_pci_dev.request_id:"},{"line_number":210,"context_line":"                vif_pci_request \u003d pci_request"},{"line_number":211,"context_line":"                break"},{"line_number":212,"context_line":"        if vif_pci_request is None:"},{"line_number":213,"context_line":"            raise exception.PciRequestFromVIFNotFound("},{"line_number":214,"context_line":"                pci_slot\u003dvif_pci_dev_address,"},{"line_number":215,"context_line":"                node_id\u003dinst_compute_node.id)"},{"line_number":216,"context_line":"    return vif_pci_request"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"def get_pci_requests_from_flavor(flavor):"}],"source_content_type":"text/x-python","patch_set":21,"id":"5fc1f717_70821852","line":216,"range":{"start_line":195,"start_character":0,"end_line":216,"end_character":26},"in_reply_to":"9fdfeff1_2aa5ee47","updated":"2019-03-06 14:02:21.000000000","message":"Done (Variation on the proposed)","commit_id":"ccc6ae9e649840e6b3e654a71f3b77103e6e5de2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        LOG.warning(\"expected to find compute node with host %s \""},{"line_number":207,"context_line":"                    \"and node %s when getting instance PCI request \""},{"line_number":208,"context_line":"                    \"from VIF\", instance.host, instance.node)"},{"line_number":209,"context_line":"        return None"},{"line_number":210,"context_line":"    # Find PCIDevice associated with vif_pci_dev_addr on the compute node"},{"line_number":211,"context_line":"    # the instance is running on."},{"line_number":212,"context_line":"    found_pci_dev \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_e6af2092","line":209,"range":{"start_line":209,"start_character":15,"end_line":209,"end_character":19},"updated":"2019-03-07 02:11:12.000000000","message":"nit: unnecessary (None is the default return)","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"19198c09a9833d1e6e623d9964ca802c4e582cde","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        LOG.warning(\"expected to find compute node with host %s \""},{"line_number":207,"context_line":"                    \"and node %s when getting instance PCI request \""},{"line_number":208,"context_line":"                    \"from VIF\", instance.host, instance.node)"},{"line_number":209,"context_line":"        return None"},{"line_number":210,"context_line":"    # Find PCIDevice associated with vif_pci_dev_addr on the compute node"},{"line_number":211,"context_line":"    # the instance is running on."},{"line_number":212,"context_line":"    found_pci_dev \u003d None"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_53d033f8","line":209,"range":{"start_line":209,"start_character":15,"end_line":209,"end_character":19},"in_reply_to":"5fc1f717_e6af2092","updated":"2019-03-07 07:46:46.000000000","message":"i\u0027ve added it mainly for clarity, same as L#198.","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    # the instance is running on."},{"line_number":212,"context_line":"    found_pci_dev \u003d None"},{"line_number":213,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":214,"context_line":"        if pci_dev.compute_node_id \u003d\u003d cn_id and \\"},{"line_number":215,"context_line":"                pci_dev.address \u003d\u003d vif_pci_dev_addr:"},{"line_number":216,"context_line":"            found_pci_dev \u003d pci_dev"},{"line_number":217,"context_line":"            break"},{"line_number":218,"context_line":"    if not found_pci_dev:"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_86941c46","line":215,"range":{"start_line":214,"start_character":48,"end_line":215,"end_character":52},"updated":"2019-03-07 02:11:12.000000000","message":"style nit: use the brackets, Luke","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f751716d606d24e6461257f75f454baea45463c5","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    # the instance is running on."},{"line_number":212,"context_line":"    found_pci_dev \u003d None"},{"line_number":213,"context_line":"    for pci_dev in instance.pci_devices:"},{"line_number":214,"context_line":"        if pci_dev.compute_node_id \u003d\u003d cn_id and \\"},{"line_number":215,"context_line":"                pci_dev.address \u003d\u003d vif_pci_dev_addr:"},{"line_number":216,"context_line":"            found_pci_dev \u003d pci_dev"},{"line_number":217,"context_line":"            break"},{"line_number":218,"context_line":"    if not found_pci_dev:"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_6ea2229d","line":215,"range":{"start_line":214,"start_character":48,"end_line":215,"end_character":52},"in_reply_to":"5fc1f717_86941c46","updated":"2019-03-07 09:33:03.000000000","message":"Done","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":216,"context_line":"            found_pci_dev \u003d pci_dev"},{"line_number":217,"context_line":"            break"},{"line_number":218,"context_line":"    if not found_pci_dev:"},{"line_number":219,"context_line":"        return None"},{"line_number":220,"context_line":"    # Find PCIRequest associated with the given PCIDevice in instance"},{"line_number":221,"context_line":"    for pci_req in instance.pci_requests.requests:"},{"line_number":222,"context_line":"        if pci_req.request_id \u003d\u003d found_pci_dev.request_id:"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_469e3464","line":219,"range":{"start_line":219,"start_character":15,"end_line":219,"end_character":19},"updated":"2019-03-07 02:11:12.000000000","message":"as above","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"024110655aca35796a2316b65daefc6022ff1761","unresolved":false,"context_lines":[{"line_number":51,"context_line":"from nova.objects import fields as obj_fields"},{"line_number":52,"context_line":"from nova.pci import utils"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":55,"context_line":"PCI_NET_TAG \u003d \u0027physical_network\u0027"},{"line_number":56,"context_line":"PCI_TRUSTED_TAG \u003d \u0027trusted\u0027"},{"line_number":57,"context_line":"PCI_DEVICE_TYPE_TAG \u003d \u0027dev_type\u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"5fc1f717_e8983c6b","line":54,"updated":"2019-03-07 17:26:20.000000000","message":"nit: would be more typical to group this with \u0027CONF\u0027 below","commit_id":"30295f1a141bb10f69f39c7ba453c7162db926b2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05c8554ef0f2383a1bc08b45c6b503734841965f","unresolved":false,"context_lines":[{"line_number":205,"context_line":"    except exception.NotFound:"},{"line_number":206,"context_line":"        LOG.warning(\"expected to find compute node with host %s \""},{"line_number":207,"context_line":"                    \"and node %s when getting instance PCI request \""},{"line_number":208,"context_line":"                    \"from VIF\", instance.host, instance.node)"},{"line_number":209,"context_line":"        return None"},{"line_number":210,"context_line":"    # Find PCIDevice associated with vif_pci_dev_addr on the compute node"},{"line_number":211,"context_line":"    # the instance is running on."}],"source_content_type":"text/x-python","patch_set":25,"id":"5fc1f717_cb73fae6","line":208,"updated":"2019-03-07 18:19:10.000000000","message":"✔ thanks for adding this\n\ntechnically, there\u0027s no unit test corresponding to this conditional, but I\u0027m OK with that..","commit_id":"30295f1a141bb10f69f39c7ba453c7162db926b2"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"05c8554ef0f2383a1bc08b45c6b503734841965f","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    raise exception.PciRequestFromVIFNotFound("},{"line_number":226,"context_line":"        pci_slot\u003dvif_pci_dev_addr,"},{"line_number":227,"context_line":"        node_id\u003dcn_id)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"def get_pci_requests_from_flavor(flavor):"}],"source_content_type":"text/x-python","patch_set":25,"id":"5fc1f717_0b4b4284","line":227,"updated":"2019-03-07 18:19:10.000000000","message":"much cleaner thank you.","commit_id":"30295f1a141bb10f69f39c7ba453c7162db926b2"}],"nova/tests/unit/pci/test_request.py":[{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aabbd96d93fbb4e1844ae70ab703aeeb411d1977","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Tests for PCI request.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils.fixture import uuidsentinel"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_8521c2a3","line":19,"updated":"2018-12-11 07:52:27.000000000","message":"nit: This blank line is not necessary.","commit_id":"a60631fd3a5df3e81dd9141fc1dd60f7cdd6ba80"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"a9fa20ec51146c70cfd48b3885a26af344e5c9df","unresolved":false,"context_lines":[{"line_number":16,"context_line":"\"\"\"Tests for PCI request.\"\"\""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_utils.fixture import uuidsentinel"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f769fc5_4bbdb2b5","line":19,"in_reply_to":"3f79a3b5_8521c2a3","updated":"2019-01-01 11:52:07.000000000","message":"mock, as of python 3.3 is a part of the standard library[1].\nAccording to PEP8 style-guide it is required to group imports and separate by blank line [2]\n\n[1] https://pypi.org/project/mock/\n[2] https://www.python.org/dev/peps/pep-0008/#imports","commit_id":"a60631fd3a5df3e81dd9141fc1dd60f7cdd6ba80"},{"author":{"_account_id":7634,"name":"Takashi Natsume","email":"takanattie@gmail.com","username":"natsumet"},"change_message_id":"aabbd96d93fbb4e1844ae70ab703aeeb411d1977","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova.pci import request"},{"line_number":27,"context_line":"from nova import test"},{"line_number":28,"context_line":"from nova.tests.unit.api.openstack import fakes"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_fake_alias1 \u003d \"\"\"{"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_651a666a","line":29,"updated":"2018-12-11 07:52:27.000000000","message":"Remove this blank line. pep8 job fails.","commit_id":"a60631fd3a5df3e81dd9141fc1dd60f7cdd6ba80"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"43f06764384532555f77d0b757d673452cb3e280","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova.pci import request"},{"line_number":27,"context_line":"from nova import test"},{"line_number":28,"context_line":"from nova.tests.unit.api.openstack import fakes"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_fake_alias1 \u003d \"\"\"{"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f769fc5_6b350eda","line":29,"in_reply_to":"1f769fc5_9f19e989","updated":"2019-01-01 08:16:48.000000000","message":"will fix as each commit, needs to stand on its own","commit_id":"a60631fd3a5df3e81dd9141fc1dd60f7cdd6ba80"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"926839304e76355d8b35840b1cc24de6b8b209a3","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova.pci import request"},{"line_number":27,"context_line":"from nova import test"},{"line_number":28,"context_line":"from nova.tests.unit.api.openstack import fakes"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"_fake_alias1 \u003d \"\"\"{"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f769fc5_9f19e989","line":29,"in_reply_to":"3f79a3b5_651a666a","updated":"2018-12-25 16:27:26.000000000","message":"Top level patch covers this, and pep8 job is passing.","commit_id":"a60631fd3a5df3e81dd9141fc1dd60f7cdd6ba80"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        inst.node \u003d \u0027fake-node\u0027"},{"line_number":83,"context_line":"        return inst"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @staticmethod"},{"line_number":86,"context_line":"    def _create_fake_context():"},{"line_number":87,"context_line":"        return context.RequestContext(fakes.FAKE_USER_ID,"},{"line_number":88,"context_line":"                                      fakes.FAKE_PROJECT_ID)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_valid_alias(self):"},{"line_number":91,"context_line":"        self.flags(alias\u003d[_fake_alias1], group\u003d\u0027pci\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_41dd956e","line":88,"range":{"start_line":85,"start_character":0,"end_line":88,"end_character":60},"updated":"2019-01-09 18:14:06.000000000","message":"nit: Guess we could do and store this in the setUp too? Much of a muchness","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f94951a8c85783fd2d3b26badd8871e43fff2ec3","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        inst.node \u003d \u0027fake-node\u0027"},{"line_number":83,"context_line":"        return inst"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    @staticmethod"},{"line_number":86,"context_line":"    def _create_fake_context():"},{"line_number":87,"context_line":"        return context.RequestContext(fakes.FAKE_USER_ID,"},{"line_number":88,"context_line":"                                      fakes.FAKE_PROJECT_ID)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    def test_valid_alias(self):"},{"line_number":91,"context_line":"        self.flags(alias\u003d[_fake_alias1], group\u003d\u0027pci\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"bfdaf3ff_41be1266","line":88,"range":{"start_line":85,"start_character":0,"end_line":88,"end_character":60},"in_reply_to":"dfd5e7cf_41dd956e","updated":"2019-01-15 11:17:37.000000000","message":"Done","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"29b5c4e327a3742c4d17f3ee25a720c353fde1eb","unresolved":false,"context_lines":[{"line_number":259,"context_line":"        inst_cn \u003d mock.Mock()"},{"line_number":260,"context_line":"        cn_get_by_host_and_node.return_value \u003d inst_cn"},{"line_number":261,"context_line":"        inst_cn.id \u003d 1"},{"line_number":262,"context_line":"        # Create a fake instance with PCI request and allocated PCI devices"},{"line_number":263,"context_line":"        pci_req1 \u003d objects.InstancePCIRequest("},{"line_number":264,"context_line":"            request_id\u003duuidsentinel.pci_req_id1)"},{"line_number":265,"context_line":"        pci_dev1 \u003d objects.PciDevice(request_id\u003duuidsentinel.pci_req_id1,"}],"source_content_type":"text/x-python","patch_set":7,"id":"dfd5e7cf_21e2d130","line":262,"range":{"start_line":262,"start_character":8,"end_line":262,"end_character":75},"updated":"2019-01-09 18:14:06.000000000","message":"++","commit_id":"0582b9f9e41075fceb09e89290909b8fe01869d1"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class PciRequestTestCase(test.NoDBTestCase):"},{"line_number":74,"context_line":"    @staticmethod"},{"line_number":75,"context_line":"    def _create_fake_inst_with_pci_devs(pci_req_list, pci_dev_list):"},{"line_number":76,"context_line":"        inst \u003d objects.Instance()"},{"line_number":77,"context_line":"        inst.uuid \u003d uuidsentinel.instance1"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_26944837","line":74,"updated":"2019-03-07 02:11:12.000000000","message":"nit: newline above here","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f751716d606d24e6461257f75f454baea45463c5","unresolved":false,"context_lines":[{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class PciRequestTestCase(test.NoDBTestCase):"},{"line_number":74,"context_line":"    @staticmethod"},{"line_number":75,"context_line":"    def _create_fake_inst_with_pci_devs(pci_req_list, pci_dev_list):"},{"line_number":76,"context_line":"        inst \u003d objects.Instance()"},{"line_number":77,"context_line":"        inst.uuid \u003d uuidsentinel.instance1"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_090b588e","line":74,"in_reply_to":"5fc1f717_26944837","updated":"2019-03-07 09:33:03.000000000","message":"Done","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class PciRequestTestCase(test.NoDBTestCase):"},{"line_number":74,"context_line":"    @staticmethod"},{"line_number":75,"context_line":"    def _create_fake_inst_with_pci_devs(pci_req_list, pci_dev_list):"},{"line_number":76,"context_line":"        inst \u003d objects.Instance()"},{"line_number":77,"context_line":"        inst.uuid \u003d uuidsentinel.instance1"},{"line_number":78,"context_line":"        inst.pci_requests \u003d objects.InstancePCIRequests("}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_c698e46b","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":39},"updated":"2019-03-07 02:11:12.000000000","message":"A docstring describing what you\u0027re trying to do here would be mighty helpful","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"f751716d606d24e6461257f75f454baea45463c5","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class PciRequestTestCase(test.NoDBTestCase):"},{"line_number":74,"context_line":"    @staticmethod"},{"line_number":75,"context_line":"    def _create_fake_inst_with_pci_devs(pci_req_list, pci_dev_list):"},{"line_number":76,"context_line":"        inst \u003d objects.Instance()"},{"line_number":77,"context_line":"        inst.uuid \u003d uuidsentinel.instance1"},{"line_number":78,"context_line":"        inst.pci_requests \u003d objects.InstancePCIRequests("}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_a9ffa465","line":75,"range":{"start_line":75,"start_character":8,"end_line":75,"end_character":39},"in_reply_to":"5fc1f717_c698e46b","updated":"2019-03-07 09:33:03.000000000","message":"Done","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"cb556b11eff3c8ace7eebbc6bbd8f0fedeed1ca1","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def setUp(self):"},{"line_number":86,"context_line":"        super(PciRequestTestCase, self).setUp()"},{"line_number":87,"context_line":"        self.context \u003d context.RequestContext(fakes.FAKE_USER_ID,"},{"line_number":88,"context_line":"                                                   fakes.FAKE_PROJECT_ID)"},{"line_number":89,"context_line":"        self.mock_inst_cn \u003d mock.Mock()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_valid_alias(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_66749036","line":88,"range":{"start_line":88,"start_character":46,"end_line":88,"end_character":51},"updated":"2019-03-07 02:11:12.000000000","message":"nit","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"8ac428bc69a2f5914388d7cd4a46cdf8f29e0a55","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def setUp(self):"},{"line_number":86,"context_line":"        super(PciRequestTestCase, self).setUp()"},{"line_number":87,"context_line":"        self.context \u003d context.RequestContext(fakes.FAKE_USER_ID,"},{"line_number":88,"context_line":"                                                   fakes.FAKE_PROJECT_ID)"},{"line_number":89,"context_line":"        self.mock_inst_cn \u003d mock.Mock()"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def test_valid_alias(self):"}],"source_content_type":"text/x-python","patch_set":23,"id":"5fc1f717_29e414ac","line":88,"range":{"start_line":88,"start_character":46,"end_line":88,"end_character":51},"in_reply_to":"5fc1f717_66749036","updated":"2019-03-07 09:39:37.000000000","message":"Done","commit_id":"bc718dd37c1505aa3784c8379b6544d1bae169b5"}]}
