)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"6169645dd5aab51c58f7d9da3f01c7bffe402b7c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manjunath Patil \u003cmpatil@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-07-27 16:01:58 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handling devname exception in PCI whitelist."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ignore the PCIDeviceNotFound exceptions\tin resource tracker"},{"line_number":10,"context_line":"when devname is used in Whitelist configuration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bacf61ea_cadd2372","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"updated":"2016-07-28 03:37:16.000000000","message":"Needs a re-phrase. This change introduces a facility to resolve PCI devices on the host during Guest boot-up.","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"9156713d838ba2f61f7e189b9125a6b1fd42a839","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Manjunath Patil \u003cmpatil@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-07-27 16:01:58 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handling devname exception in PCI whitelist."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ignore the PCIDeviceNotFound exceptions\tin resource tracker"},{"line_number":10,"context_line":"when devname is used in Whitelist configuration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bacf61ea_0a561bd2","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":8},"in_reply_to":"bacf61ea_cadd2372","updated":"2016-07-28 07:35:42.000000000","message":"Done","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"6169645dd5aab51c58f7d9da3f01c7bffe402b7c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handling devname exception in PCI whitelist."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ignore the PCIDeviceNotFound exceptions\tin resource tracker"},{"line_number":10,"context_line":"when devname is used in Whitelist configuration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7a65857454cc132d97df9abb8297d350514cf2df"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bacf61ea_0ae8db0f","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":28},"updated":"2016-07-28 03:37:16.000000000","message":"We are not doing this anymore.","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"9156713d838ba2f61f7e189b9125a6b1fd42a839","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handling devname exception in PCI whitelist."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ignore the PCIDeviceNotFound exceptions\tin resource tracker"},{"line_number":10,"context_line":"when devname is used in Whitelist configuration."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I7a65857454cc132d97df9abb8297d350514cf2df"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"bacf61ea_ea52a7dc","line":9,"range":{"start_line":9,"start_character":11,"end_line":9,"end_character":28},"in_reply_to":"bacf61ea_0ae8db0f","updated":"2016-07-28 07:35:42.000000000","message":"Done","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d0d7eae9da5752fbb978898402f03fbb100528f7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-07-28 16:00:52 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This change introduces a facility to resolve"},{"line_number":8,"context_line":"PCI devices on the host during Guest boot-up."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"When devname is used in Whitelist configuration,"},{"line_number":11,"context_line":"dev_name to address resolution is done at the time"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"bacf61ea_bfe29d01","line":8,"updated":"2016-07-28 10:58:52.000000000","message":"Title too long, look at literally any merged patch for examples","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"2f74ca41c97bc7b9e5ce58c583e2162008c3e00f","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-07-28 16:00:52 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"This change introduces a facility to resolve"},{"line_number":8,"context_line":"PCI devices on the host during Guest boot-up."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"When devname is used in Whitelist configuration,"},{"line_number":11,"context_line":"dev_name to address resolution is done at the time"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"bacf61ea_f6f9d7c9","line":8,"in_reply_to":"bacf61ea_bfe29d01","updated":"2016-07-28 14:49:21.000000000","message":"Done","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":17973,"name":"Ludovic Beliveau","email":"lbeliveau@gmail.com","username":"lbeliveau"},"change_message_id":"d8d47bba72bf4192f0388797d48d33d5d46bc837","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When devname is used in Whitelist configuration,"},{"line_number":10,"context_line":"dev_name to address resolution is done at the time"},{"line_number":11,"context_line":"we match the whitelist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7a65857454cc132d97df9abb8297d350514cf2df"},{"line_number":14,"context_line":"Closes-Bug: #1605549"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bacf61ea_1699a7c4","line":11,"updated":"2016-07-30 15:23:15.000000000","message":"Bad wording here.\n\nMaybe: resolve the address of devname when trying to match a device in the whiltelist.","commit_id":"6dfe438ddd9f8bf432b4e871e36bf8903da82d65"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"c7bc6dcba47f48f893e386334ff85e4f14b4d34a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When devname is used in Whitelist configuration,"},{"line_number":10,"context_line":"dev_name to address resolution is done at the time"},{"line_number":11,"context_line":"we match the whitelist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7a65857454cc132d97df9abb8297d350514cf2df"},{"line_number":14,"context_line":"Closes-Bug: #1605549"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"bacf61ea_2feb9f14","line":11,"in_reply_to":"bacf61ea_1699a7c4","updated":"2016-08-01 05:59:55.000000000","message":"Done","commit_id":"6dfe438ddd9f8bf432b4e871e36bf8903da82d65"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"7fd0b751014bb9b98aca2cb15901c049c7ee1280","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When devname is used in Whitelist configuration,"},{"line_number":10,"context_line":"resolve the address of devname when trying to"},{"line_number":11,"context_line":"match a device in the whiltelist."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I7a65857454cc132d97df9abb8297d350514cf2df"},{"line_number":14,"context_line":"Closes-Bug: #1605549"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"bacf61ea_fca2d8ac","line":11,"range":{"start_line":11,"start_character":22,"end_line":11,"end_character":32},"updated":"2016-08-01 10:03:45.000000000","message":"nit whitelist","commit_id":"433fe514e8d166345b2bd8fa0b3055724285406d"}],"nova/pci/devspec.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"3778f4ca04f8b5657b7dc77f2de9d6608276bfac","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                self.address, pf \u003d utils.get_function_by_ifname("},{"line_number":152,"context_line":"                    self.dev_name)"},{"line_number":153,"context_line":"                if not self.address:"},{"line_number":154,"context_line":"                    self.resolved \u003d False"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                self.address \u003d \"*:*:*.*\""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_ef89cccb","line":154,"updated":"2016-07-25 17:25:29.000000000","message":"You\u0027re now completely ignoring the device if the devname can\u0027t be resolved at nova startup. This is almost as badly broken as it was before. As PCI devices/functions at attached/detached from guests ,the NIC with \u0027dev_name\u0027 may appear/disappear. We shoudl *always* resolve dev_name -\u003e address at the time we match the whitelist. ie get_function_by_ifname should be in the \u0027match\u0027 function, not in the constructor","commit_id":"40ce2d19f0ad4ac9bf3c5f4ac3e1bba34471b6cc"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"8d07d5758a8f7e32a49a7c250d464e52307e1a30","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                self.address, pf \u003d utils.get_function_by_ifname("},{"line_number":152,"context_line":"                    self.dev_name)"},{"line_number":153,"context_line":"                if not self.address:"},{"line_number":154,"context_line":"                    self.resolved \u003d False"},{"line_number":155,"context_line":"            else:"},{"line_number":156,"context_line":"                self.address \u003d \"*:*:*.*\""},{"line_number":157,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"dada55a8_3b1aafc6","line":154,"in_reply_to":"dada55a8_ef89cccb","updated":"2016-07-27 07:06:13.000000000","message":"Done","commit_id":"40ce2d19f0ad4ac9bf3c5f4ac3e1bba34471b6cc"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"45958e8cd3faa95be3399a10c16eb9e82aafbce3","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.product_id \u003d self.tags.pop(\"product_id\", ANY)"},{"line_number":138,"context_line":"        self.address \u003d self.tags.pop(\"address\", None)"},{"line_number":139,"context_line":"        self.dev_name \u003d self.tags.pop(\"devname\", None)"},{"line_number":140,"context_line":"        self.pf \u003d False"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        self.vendor_id \u003d self.vendor_id.strip()"},{"line_number":143,"context_line":"        get_pci_dev_info(self, \u0027vendor_id\u0027, MAX_VENDOR_ID, \u0027%04x\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_80eec31f","line":140,"updated":"2016-07-27 08:42:42.000000000","message":"I don\u0027t see any point in making this an instance variable - its value isn\u0027t required to be persistent outside the lifetime of the method call.","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"a076d157afd4d69ce058cd372591c2e4761b63d2","unresolved":false,"context_lines":[{"line_number":137,"context_line":"        self.product_id \u003d self.tags.pop(\"product_id\", ANY)"},{"line_number":138,"context_line":"        self.address \u003d self.tags.pop(\"address\", None)"},{"line_number":139,"context_line":"        self.dev_name \u003d self.tags.pop(\"devname\", None)"},{"line_number":140,"context_line":"        self.pf \u003d False"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"        self.vendor_id \u003d self.vendor_id.strip()"},{"line_number":143,"context_line":"        get_pci_dev_info(self, \u0027vendor_id\u0027, MAX_VENDOR_ID, \u0027%04x\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_e0cfbf26","line":140,"in_reply_to":"dada55a8_80eec31f","updated":"2016-07-27 08:58:51.000000000","message":"Done","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"45958e8cd3faa95be3399a10c16eb9e82aafbce3","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                if not self.address:"},{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                self.address \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(self.address, self.pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_606bcf85","line":159,"updated":"2016-07-27 08:42:42.000000000","message":"You\u0027re assigning to self.address as a plain string and then in the very next line assigning it an object instance. This is really misleading \u0026 pointless at the same time \n\nEither way I don\u0027t think you should assign to self.address at all - the resolution of self.dev_name -\u003e address should be done fresh each time since in general there\u0027s no guarantee that \u0027devname\u0027 will always point to the same address after hotplug/unplug sequence, or a VM assign/release sequence.","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"8b10d0dc093a79974b52689d5f0df20303da5686","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                if not self.address:"},{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                self.address \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(self.address, self.pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_6f1f38b7","line":159,"in_reply_to":"dada55a8_34de39dd","updated":"2016-07-27 10:28:54.000000000","message":"Done","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"a076d157afd4d69ce058cd372591c2e4761b63d2","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                if not self.address:"},{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                self.address \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(self.address, self.pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_a04ca79e","line":159,"in_reply_to":"dada55a8_606bcf85","updated":"2016-07-27 08:58:51.000000000","message":"If devname and address both are not present in the whitelist, only vendor_id and product_id is present.\nwe need to assign the default address as \"*:*:*.*\" to create an PciAddress Object.","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"6ba6e9b2b978aee4ca815d87c85945b411159d3d","unresolved":false,"context_lines":[{"line_number":156,"context_line":"                if not self.address:"},{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                self.address \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(self.address, self.pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_34de39dd","line":159,"in_reply_to":"dada55a8_a04ca79e","updated":"2016-07-27 10:06:24.000000000","message":"Don\u0027t use self.address for the interim result. Use a local:\n\n        if not self.address:\n            if self.dev_name:\n                address_str, self.pf \u003d utils.get_function_by_ifname(\n                    self.dev_name)\n                if not address_str:\n                    return False\n            else:\n                address_str \u003d \"*:*:*.*\"\n            self.address \u003d PciAddress(address_str, self.pf)","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"dfcc1bd66c3e318383af897fde9734abe1bb8263","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":163,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"dada55a8_09e67343","line":160,"updated":"2016-07-27 12:45:22.000000000","message":"oops, I missed the second part of Daniel\u0027s comment. If self.address is unset, he wants it recomputed every time.","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"9156713d838ba2f61f7e189b9125a6b1fd42a839","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":163,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_785dede8","line":160,"in_reply_to":"bacf61ea_8a6e8bc7","updated":"2016-07-28 07:35:42.000000000","message":"Agree with Sonu","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"7b38bcba48b723fecef96b55ea8b89dea339d47d","unresolved":false,"context_lines":[{"line_number":157,"context_line":"                    return False"},{"line_number":158,"context_line":"            else:"},{"line_number":159,"context_line":"                address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":161,"context_line":"        conditions \u003d ["},{"line_number":162,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":163,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"bacf61ea_8a6e8bc7","line":160,"in_reply_to":"dada55a8_09e67343","updated":"2016-07-28 03:33:38.000000000","message":"IMO address should be re-computed only if \u0027devname\u0027 is set.","commit_id":"98083635ce10df192d29f831c5ca39727d3e582b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7169b8f150e045cdf1726c98908141266efdb05e","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            if not address_str:"},{"line_number":157,"context_line":"                return False"},{"line_number":158,"context_line":"        elif not self.address:"},{"line_number":159,"context_line":"            address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"        if address_str:"},{"line_number":161,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":162,"context_line":"        conditions \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_a1f9edca","line":159,"updated":"2016-07-28 08:15:32.000000000","message":"This wildcarding should still be set in the constructor","commit_id":"87de8d77c2e9ea04f4bc327ac4ad033288bf64ab"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"8f247bc41e3925fcf0a9b5ef2b88b0a1f4e53dcf","unresolved":false,"context_lines":[{"line_number":156,"context_line":"            if not address_str:"},{"line_number":157,"context_line":"                return False"},{"line_number":158,"context_line":"        elif not self.address:"},{"line_number":159,"context_line":"            address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"        if address_str:"},{"line_number":161,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":162,"context_line":"        conditions \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_64126364","line":159,"in_reply_to":"bacf61ea_a1f9edca","updated":"2016-07-28 08:54:54.000000000","message":"Done","commit_id":"87de8d77c2e9ea04f4bc327ac4ad033288bf64ab"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7169b8f150e045cdf1726c98908141266efdb05e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        elif not self.address:"},{"line_number":159,"context_line":"            address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"        if address_str:"},{"line_number":161,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":162,"context_line":"        conditions \u003d ["},{"line_number":163,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":164,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_0131d9a2","line":161,"updated":"2016-07-28 08:15:32.000000000","message":"Again, do *NOT* set self.address here.","commit_id":"87de8d77c2e9ea04f4bc327ac4ad033288bf64ab"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"8f247bc41e3925fcf0a9b5ef2b88b0a1f4e53dcf","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        elif not self.address:"},{"line_number":159,"context_line":"            address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"        if address_str:"},{"line_number":161,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":162,"context_line":"        conditions \u003d ["},{"line_number":163,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":164,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_1f049013","line":161,"in_reply_to":"bacf61ea_0131d9a2","updated":"2016-07-28 08:54:54.000000000","message":"The current change resolves the self.dev_name to address each time.\nif we don\u0027t set the self.address even after resolving the self.dev_name -\u003e address then , below conditions code\n   self.address.match(dev_dict[\u0027address\u0027],  \n        dev_dict.get(\u0027parent_addr\u0027)) will fail.","commit_id":"87de8d77c2e9ea04f4bc327ac4ad033288bf64ab"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"2a039e5c8e51ad21f9b80f814f858c6090c41153","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        elif not self.address:"},{"line_number":159,"context_line":"            address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"        if address_str:"},{"line_number":161,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":162,"context_line":"        conditions \u003d ["},{"line_number":163,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":164,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_5011d5ab","line":161,"in_reply_to":"bacf61ea_1a3c9e92","updated":"2016-07-28 09:52:01.000000000","message":"Done","commit_id":"87de8d77c2e9ea04f4bc327ac4ad033288bf64ab"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"837cb9c6e912c959d3c9b465760c767020cdae95","unresolved":false,"context_lines":[{"line_number":158,"context_line":"        elif not self.address:"},{"line_number":159,"context_line":"            address_str \u003d \"*:*:*.*\""},{"line_number":160,"context_line":"        if address_str:"},{"line_number":161,"context_line":"            self.address \u003d PciAddress(address_str, pf)"},{"line_number":162,"context_line":"        conditions \u003d ["},{"line_number":163,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":164,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":6,"id":"bacf61ea_1a3c9e92","line":161,"in_reply_to":"bacf61ea_1f049013","updated":"2016-07-28 09:09:15.000000000","message":"Just change that line so it uses a local variable instead of self.address.","commit_id":"87de8d77c2e9ea04f4bc327ac4ad033288bf64ab"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"ff30d967ac3f17f90df725940c266b2a2c6a6362","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                self.dev_name)"},{"line_number":160,"context_line":"            if not address_str:"},{"line_number":161,"context_line":"                return False"},{"line_number":162,"context_line":"            address_str \u003d PciAddress(address_str, pf)"},{"line_number":163,"context_line":"        if self.address:"},{"line_number":164,"context_line":"            address_str \u003d self.address"},{"line_number":165,"context_line":"        conditions \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_b99e3d54","line":162,"updated":"2016-07-28 10:21:45.000000000","message":"This variable name is horribly misleading because you\u0027re not assigning a string to do.","commit_id":"342fdc0be2c131a85ddc159cd6642b3d126d56be"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"45b1a1f84d84216773b47c2206776b4ce66b033d","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                self.dev_name)"},{"line_number":160,"context_line":"            if not address_str:"},{"line_number":161,"context_line":"                return False"},{"line_number":162,"context_line":"            address_str \u003d PciAddress(address_str, pf)"},{"line_number":163,"context_line":"        if self.address:"},{"line_number":164,"context_line":"            address_str \u003d self.address"},{"line_number":165,"context_line":"        conditions \u003d ["}],"source_content_type":"text/x-python","patch_set":7,"id":"bacf61ea_d9fe916a","line":162,"in_reply_to":"bacf61ea_b99e3d54","updated":"2016-07-28 10:23:39.000000000","message":"Done","commit_id":"342fdc0be2c131a85ddc159cd6642b3d126d56be"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d0d7eae9da5752fbb978898402f03fbb100528f7","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        if self.address and self.dev_name:"},{"line_number":146,"context_line":"            raise exception.PciDeviceInvalidDeviceName()"},{"line_number":147,"context_line":"        if not self.dev_name:"},{"line_number":148,"context_line":"            if not self.address:"},{"line_number":149,"context_line":"                address_str \u003d \"*:*:*.*\""},{"line_number":150,"context_line":"            else:"},{"line_number":151,"context_line":"                address_str \u003d self.address"},{"line_number":152,"context_line":"            self.address \u003d PciAddress(address_str, False)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def match(self, dev_dict):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_bfa45d57","line":151,"range":{"start_line":148,"start_character":0,"end_line":151,"end_character":42},"updated":"2016-07-28 10:58:52.000000000","message":"this is simpler as:\n            \n  address_str \u003d self.address or \"*:*:*.*\"","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"2f74ca41c97bc7b9e5ce58c583e2162008c3e00f","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        if self.address and self.dev_name:"},{"line_number":146,"context_line":"            raise exception.PciDeviceInvalidDeviceName()"},{"line_number":147,"context_line":"        if not self.dev_name:"},{"line_number":148,"context_line":"            if not self.address:"},{"line_number":149,"context_line":"                address_str \u003d \"*:*:*.*\""},{"line_number":150,"context_line":"            else:"},{"line_number":151,"context_line":"                address_str \u003d self.address"},{"line_number":152,"context_line":"            self.address \u003d PciAddress(address_str, False)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def match(self, dev_dict):"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_f6cef781","line":151,"range":{"start_line":148,"start_character":0,"end_line":151,"end_character":42},"in_reply_to":"bacf61ea_bfa45d57","updated":"2016-07-28 14:49:21.000000000","message":"Done","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d0d7eae9da5752fbb978898402f03fbb100528f7","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def match(self, dev_dict):"},{"line_number":155,"context_line":"        pf \u003d False"},{"line_number":156,"context_line":"        address_str \u003d None"},{"line_number":157,"context_line":"        if self.dev_name:"},{"line_number":158,"context_line":"            address_str, pf \u003d utils.get_function_by_ifname("},{"line_number":159,"context_line":"                self.dev_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_ffa09592","line":156,"updated":"2016-07-28 10:58:52.000000000","message":"you don\u0027t need to initialise these vars, they are set on L158 and only used on L162","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"2f74ca41c97bc7b9e5ce58c583e2162008c3e00f","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def match(self, dev_dict):"},{"line_number":155,"context_line":"        pf \u003d False"},{"line_number":156,"context_line":"        address_str \u003d None"},{"line_number":157,"context_line":"        if self.dev_name:"},{"line_number":158,"context_line":"            address_str, pf \u003d utils.get_function_by_ifname("},{"line_number":159,"context_line":"                self.dev_name)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_96b97bec","line":156,"in_reply_to":"bacf61ea_ffa09592","updated":"2016-07-28 14:49:21.000000000","message":"Done","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d0d7eae9da5752fbb978898402f03fbb100528f7","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if not address_str:"},{"line_number":161,"context_line":"                return False"},{"line_number":162,"context_line":"            address_obj \u003d PciAddress(address_str, pf)"},{"line_number":163,"context_line":"        if self.address:"},{"line_number":164,"context_line":"            address_obj \u003d self.address"},{"line_number":165,"context_line":"        conditions \u003d ["},{"line_number":166,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_5f21e1fa","line":163,"updated":"2016-07-28 10:58:52.000000000","message":"Make this an elif since according to L145 both can\u0027t be set at once; I would also switch the order but that\u0027s not necessary","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"2f74ca41c97bc7b9e5ce58c583e2162008c3e00f","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            if not address_str:"},{"line_number":161,"context_line":"                return False"},{"line_number":162,"context_line":"            address_obj \u003d PciAddress(address_str, pf)"},{"line_number":163,"context_line":"        if self.address:"},{"line_number":164,"context_line":"            address_obj \u003d self.address"},{"line_number":165,"context_line":"        conditions \u003d ["},{"line_number":166,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_56bf03d0","line":163,"in_reply_to":"bacf61ea_5f21e1fa","updated":"2016-07-28 14:49:21.000000000","message":"Done","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":8688,"name":"Alexis Lee","email":"openstack@lxsli.co.uk","username":"lxsli"},"change_message_id":"d0d7eae9da5752fbb978898402f03fbb100528f7","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            address_obj \u003d PciAddress(address_str, pf)"},{"line_number":163,"context_line":"        if self.address:"},{"line_number":164,"context_line":"            address_obj \u003d self.address"},{"line_number":165,"context_line":"        conditions \u003d ["},{"line_number":166,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":167,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"},{"line_number":168,"context_line":"            address_obj.match(dev_dict[\u0027address\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_ffc7f542","line":165,"updated":"2016-07-28 10:58:52.000000000","message":"nit you could change this line to:\n\n  return all([","commit_id":"54e3307916b34022931614529e4412c2b808201e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"2f74ca41c97bc7b9e5ce58c583e2162008c3e00f","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            address_obj \u003d PciAddress(address_str, pf)"},{"line_number":163,"context_line":"        if self.address:"},{"line_number":164,"context_line":"            address_obj \u003d self.address"},{"line_number":165,"context_line":"        conditions \u003d ["},{"line_number":166,"context_line":"            self.vendor_id in (ANY, dev_dict[\u0027vendor_id\u0027]),"},{"line_number":167,"context_line":"            self.product_id in (ANY, dev_dict[\u0027product_id\u0027]),"},{"line_number":168,"context_line":"            address_obj.match(dev_dict[\u0027address\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_b6b47ff2","line":165,"in_reply_to":"bacf61ea_ffc7f542","updated":"2016-07-28 14:49:21.000000000","message":"Done","commit_id":"54e3307916b34022931614529e4412c2b808201e"}],"nova/pci/whitelist.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"0c320a200678ea526a2ec1ddbce6637f096bee12","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    specs.append(spec)"},{"line_number":65,"context_line":"                except exception.PciDeviceNotFoundById as e:"},{"line_number":66,"context_line":"                    LOG.warning(_LW(\"%(pci_exception)s\"),"},{"line_number":67,"context_line":"                            {\u0027pci_exception\u0027: e.format_message()})"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return specs"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_fe6ba5ef","line":67,"updated":"2016-07-22 09:25:20.000000000","message":"This is still ultimately broken. The cause of this exception is when PciDeviceSpec constructor tries to resolve the \u0027devname\u0027 into a PCI address. Your change here is causing the PciDeviceSpec entry to be dropped when the devname does not exist at the time we parse the whitelist. This is wrong, because the devname make well exist once again by the time we come to evaluate the spec.\n\nIOW, merely constructing the PciDeviceSpec should never try to resolve the device on the host.  That resolution from devname -\u003e address should not take place until the \u0027match\u0027 method runs.","commit_id":"7cdae79a013bec27298b514dc111789aab17b63b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"07cec9871b9b3ebc60749c074fc29d36996be46e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    specs.append(spec)"},{"line_number":65,"context_line":"                except exception.PciDeviceNotFoundById as e:"},{"line_number":66,"context_line":"                    LOG.warning(_LW(\"%(pci_exception)s\"),"},{"line_number":67,"context_line":"                            {\u0027pci_exception\u0027: e.format_message()})"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return specs"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_65723813","line":67,"in_reply_to":"dada55a8_134aaf83","updated":"2016-07-25 09:11:18.000000000","message":"There is really no such thing as an invalid devname at startup. Any dev name in the whitelist may only appear later when a NIC is hotplugged, or a PCI device currently used by a guest is released. As such any attempt to validate devnames at startup is 100% broken by design.","commit_id":"7cdae79a013bec27298b514dc111789aab17b63b"},{"author":{"_account_id":15130,"name":"Sonu","email":"sonu.sudhakaran@gmail.com","username":"sonu"},"change_message_id":"e96e2ea541d531b4dd8ce443ea1abac7420677d9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    specs.append(spec)"},{"line_number":65,"context_line":"                except exception.PciDeviceNotFoundById as e:"},{"line_number":66,"context_line":"                    LOG.warning(_LW(\"%(pci_exception)s\"),"},{"line_number":67,"context_line":"                            {\u0027pci_exception\u0027: e.format_message()})"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        return specs"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"dada55a8_134aaf83","line":67,"in_reply_to":"dada55a8_fe6ba5ef","updated":"2016-07-25 05:38:59.000000000","message":"Daniel Thanks for the suggestion. \nIf the devname-\u003eaddress resolution takes place in \u0027match\u0027 method, then are you ok if the creation of Whitelist object never raises PCIDeviceNotFoundById exception?  That would also mean, the incorrect devname in whitelist entry will be caught only when \u0027match\u0027 is called (during VM boot) and not at the start-up of n-cpu service.","commit_id":"7cdae79a013bec27298b514dc111789aab17b63b"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"5fd8304c7a51b9ed99882cae768dc2e7366df827","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def get_devspec(self, pci_dev):"},{"line_number":93,"context_line":"        for spec in self.specs:"},{"line_number":94,"context_line":"            if spec.match_pci_obj(pci_dev):"},{"line_number":95,"context_line":"                    return spec"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def get_pci_device_devspec(pci_dev):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_e024df60","line":95,"updated":"2016-07-27 08:43:12.000000000","message":"Don\u0027t make unrelated whitespace changes in the same commit as a functional change.","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"},{"author":{"_account_id":11820,"name":"MANJUNATH PATIL","email":"mpatil@hpe.com","username":"patilmanjunath"},"change_message_id":"a076d157afd4d69ce058cd372591c2e4761b63d2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def get_devspec(self, pci_dev):"},{"line_number":93,"context_line":"        for spec in self.specs:"},{"line_number":94,"context_line":"            if spec.match_pci_obj(pci_dev):"},{"line_number":95,"context_line":"                    return spec"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"def get_pci_device_devspec(pci_dev):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dada55a8_804fe390","line":95,"in_reply_to":"dada55a8_e024df60","updated":"2016-07-27 08:58:51.000000000","message":"Done","commit_id":"230fcca8e288785948ae044ab3ef41f650059d1e"}]}
