)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     He Yongli \u003cyongli.he@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-01-03 16:34:26 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI whitelist support extra infomation and pci flavor"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027pci-flavor\u0027 define a global name for a group of pci device. which use to"},{"line_number":10,"context_line":"request the pci passthrough device via instance type."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2F8wQ%3D","line":7,"updated":"2014-01-06 10:56:51.000000000","message":"infomation \u003d\u003e information\n\nConsider:\nAdd PCI whitelist support for extra information and PCI flavor","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"PCI whitelist support extra infomation and pci flavor"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"\u0027pci-flavor\u0027 define a global name for a group of pci device. which use to"},{"line_number":10,"context_line":"request the pci passthrough device via instance type."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"whitelist specify a set of (k,v) to filter and define the flavor for the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2F8wM%3D","line":9,"updated":"2014-01-06 10:56:51.000000000","message":"define \u003d\u003e defines\n\ndevice. which use to \u003d\u003e defines. Which are used to","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":9,"context_line":"\u0027pci-flavor\u0027 define a global name for a group of pci device. which use to"},{"line_number":10,"context_line":"request the pci passthrough device via instance type."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"whitelist specify a set of (k,v) to filter and define the flavor for the"},{"line_number":13,"context_line":"pci device, the basic specs use to filter the device, extra spec like"},{"line_number":14,"context_line":"\u0027pci-flavor\u0027 will be store into the extra_info field of pci device."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2F8wA%3D","line":12,"updated":"2014-01-06 10:56:51.000000000","message":"whitelist specify  \u003d\u003e Whitelist specifies\ndefine \u003d\u003e defines","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"whitelist specify a set of (k,v) to filter and define the flavor for the"},{"line_number":13,"context_line":"pci device, the basic specs use to filter the device, extra spec like"},{"line_number":14,"context_line":"\u0027pci-flavor\u0027 will be store into the extra_info field of pci device."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"bp:pci-extra-info"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2F8v4%3D","line":14,"updated":"2014-01-06 10:56:51.000000000","message":"store into \u003d\u003e stored in","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"bp:pci-extra-info"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Sined-off-by: Yongli He \u003cyongli.he@intel.com\u003e"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Change-Id: Ida2911ebe14cfb03362dbb8e06aaf35f590f2c28"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAAUH%2F%2F8wU%3D","line":18,"updated":"2014-01-06 10:56:51.000000000","message":"Sined \u003d\u003e Signed","commit_id":"006877732258a3e9df5555622b925c9146db2b70"}],"nova/pci/pci_whitelist.py":[{"author":{"_account_id":3217,"name":"Ian Wells","username":"ijw-ubuntu"},"change_message_id":"d66372033138a82db19d8683d220a2521764ee78","unresolved":false,"context_lines":[{"line_number":57,"context_line":"            },"},{"line_number":58,"context_line":"            \"address\": {"},{"line_number":59,"context_line":"                \"type\": \"string\","},{"line_number":60,"context_line":"            },"},{"line_number":61,"context_line":"            \"pci-flavor\": {"},{"line_number":62,"context_line":"                \"type\": \"string\","},{"line_number":63,"context_line":"            },"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2Fmqc%3D","line":60,"updated":"2014-01-10 15:36:51.000000000","message":"Items above this point are match expressions.  Items below this point are extra information that\u0027s added to the PCI record.  That\u0027s not at all obvious from this file because you\u0027re using the persistent object data to work that out  (and actually it\u0027s not obvious from the other file either, because it\u0027s the intersection of the list above here and a longer list of fields including \u0027instance_id\u0027) -  can we maybe change the format of the config item so that it is?","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":120,"context_line":"        result \u003d []"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # match all specs in the list, some extra info can be"},{"line_number":123,"context_line":"        # be append to device like pci_flavor, and one device"},{"line_number":124,"context_line":"        # might match multiple spec, so we need match the spec"},{"line_number":125,"context_line":"        # one by one"},{"line_number":126,"context_line":"        for spec, extra in self.spec:"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F8vk%3D","line":123,"updated":"2014-01-06 10:56:51.000000000","message":"append to \u003d\u003e appended to the","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"a075033a45fe46a6ff91d29a4fc508173d3002a9","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # match all specs in the list, some extra info can be"},{"line_number":123,"context_line":"        # be append to device like pci_flavor, and one device"},{"line_number":124,"context_line":"        # might match multiple spec, so we need match the spec"},{"line_number":125,"context_line":"        # one by one"},{"line_number":126,"context_line":"        for spec, extra in self.spec:"},{"line_number":127,"context_line":"            if pci_utils.pci_device_prop_match(dev, [spec]):"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAUH%2F%2F8vg%3D","line":124,"updated":"2014-01-06 10:56:51.000000000","message":"spec \u003d\u003e specs","commit_id":"006877732258a3e9df5555622b925c9146db2b70"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"46c4a362db9cd956c936c57279a37cbc244ddf2e","unresolved":false,"context_lines":[{"line_number":40,"context_line":"                            \u0027For example: pci_information \u003d  \u0027"},{"line_number":41,"context_line":"                            \u0027[{\"vendor_id\": \"8086\",\u0027"},{"line_number":42,"context_line":"                            \u0027\"address\": \"*.*.*.[2-15]\"},\u0027"},{"line_number":43,"context_line":"                            \u0027 {\"e.group\":\"oldGPU\"}]\u0027"},{"line_number":44,"context_line":"                            )"},{"line_number":45,"context_line":"            ]"},{"line_number":46,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9W%2BA%3D","line":43,"updated":"2014-02-07 13:45:00.000000000","message":"A few comments with the approach taken in this module and pci_utils.py:\n   -- lack of error handling, thus lack of debugability during provisioning time. An incorrect address, for example, *.*.*.*.*, ffffff, 12345.3333.[25-11], etc, won\u0027t be detected. IMO it\u0027s not a good practice to rely on the admin to enter correct configuration.\n\n   -- we should allow the admin to enter an interface name that represents the physical function. For example (TBD the exact syntax), \n      \u0027iface.eth0\u0027, \"net-group: phynet1\"\n\n   -- the number of fields, and each field of the address (or vendor_id, product_id) has an exact definition:  *, or a single value in a range, or a range. This knowledge should be used in the code. The end result is code that is easy to understand with good error handling.\n\n   -- is the e.* notation just a convention, not enforced by the code? In that case, why bother?","commit_id":"b294ef2b4022d32c89b8caa7c6a684cc5ad17c0c"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"46c4a362db9cd956c936c57279a37cbc244ddf2e","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        # might match multiple spec, so we need match the spec"},{"line_number":180,"context_line":"        # one by one"},{"line_number":181,"context_line":"        for spec, extra in self.spec:"},{"line_number":182,"context_line":"            if pci_utils.pci_device_prop_match(dev, [spec]):"},{"line_number":183,"context_line":"                dev.update(extra)"},{"line_number":184,"context_line":"                result.append(True)"},{"line_number":185,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUH%2F9W8w%3D","line":182,"updated":"2014-02-07 13:45:00.000000000","message":"for each spec, there is a corresponding pci_mre (see pci_utils.py) object. Why has this pci_mre object generated everytime?","commit_id":"b294ef2b4022d32c89b8caa7c6a684cc5ad17c0c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9a59e48f87615e0ecf44376b3784d9885cf90e8c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if not set(specs.keys()).issubset("},{"line_number":108,"context_line":"                [\u0027vendor_id\u0027, \u0027product_id\u0027, \u0027phys_function\u0027,"},{"line_number":109,"context_line":"                 \u0027device_type\u0027, \u0027address\u0027]):"},{"line_number":110,"context_line":"            reason \u003d \"PCI specs contain invalid pci property.\""},{"line_number":111,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not all(e.startswith(\u0027e.\u0027) for e in extra.keys()):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2BwT4%3D","line":110,"updated":"2014-02-19 09:35:54.000000000","message":"missing translation - this should be:\n_(\"PCI specs contain invalid pci property.\")","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fb15b8b8dea7e0325a2221d258766b7c35d6892f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        if not set(specs.keys()).issubset("},{"line_number":108,"context_line":"                [\u0027vendor_id\u0027, \u0027product_id\u0027, \u0027phys_function\u0027,"},{"line_number":109,"context_line":"                 \u0027device_type\u0027, \u0027address\u0027]):"},{"line_number":110,"context_line":"            reason \u003d \"PCI specs contain invalid pci property.\""},{"line_number":111,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not all(e.startswith(\u0027e.\u0027) for e in extra.keys()):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAU3%2F%2FgIY%3D","line":110,"in_reply_to":"AAAAUX%2F%2BwT4%3D","updated":"2014-02-27 07:39:14.000000000","message":"Done","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9a59e48f87615e0ecf44376b3784d9885cf90e8c","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not all(e.startswith(\u0027e.\u0027) for e in extra.keys()):"},{"line_number":114,"context_line":"            reason \u003d \"PCI extra information must prefix with \u0027e.\u0027 .\""},{"line_number":115,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        for value in specs.values() + extra.values():"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2BwT0%3D","line":114,"updated":"2014-02-19 09:35:54.000000000","message":"ditto","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fb15b8b8dea7e0325a2221d258766b7c35d6892f","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        if not all(e.startswith(\u0027e.\u0027) for e in extra.keys()):"},{"line_number":114,"context_line":"            reason \u003d \"PCI extra information must prefix with \u0027e.\u0027 .\""},{"line_number":115,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        for value in specs.values() + extra.values():"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAU3%2F%2FgIU%3D","line":114,"in_reply_to":"AAAAUX%2F%2BwT0%3D","updated":"2014-02-27 07:39:14.000000000","message":"Done","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9a59e48f87615e0ecf44376b3784d9885cf90e8c","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        for value in specs.values() + extra.values():"},{"line_number":118,"context_line":"            if not isinstance(value, basestring):"},{"line_number":119,"context_line":"                reason \u003d (\"PCI information value is not string:%s.\" %"},{"line_number":120,"context_line":"                          value)"},{"line_number":121,"context_line":"                raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2BwTw%3D","line":119,"updated":"2014-02-19 09:35:54.000000000","message":"ditto","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fb15b8b8dea7e0325a2221d258766b7c35d6892f","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"        for value in specs.values() + extra.values():"},{"line_number":118,"context_line":"            if not isinstance(value, basestring):"},{"line_number":119,"context_line":"                reason \u003d (\"PCI information value is not string:%s.\" %"},{"line_number":120,"context_line":"                          value)"},{"line_number":121,"context_line":"                raise exception.PciConfigInvalidWhitelist(reason\u003dreason)"},{"line_number":122,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAU3%2F%2FgH4%3D","line":119,"in_reply_to":"AAAAUX%2F%2BwTw%3D","updated":"2014-02-27 07:39:14.000000000","message":"Done","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"9a59e48f87615e0ecf44376b3784d9885cf90e8c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    extra_info.update(info_specs[1])"},{"line_number":136,"context_line":"                self._validate_pci_information(white_list, extra_info)"},{"line_number":137,"context_line":"                specs.append((white_list, extra_info))"},{"line_number":138,"context_line":"        except Exception as e:"},{"line_number":139,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dstr(e))"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return specs"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAUX%2F%2BwTc%3D","line":138,"updated":"2014-02-19 09:35:54.000000000","message":"is it possible to catch specific exceptions here?","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"fb15b8b8dea7e0325a2221d258766b7c35d6892f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                    extra_info.update(info_specs[1])"},{"line_number":136,"context_line":"                self._validate_pci_information(white_list, extra_info)"},{"line_number":137,"context_line":"                specs.append((white_list, extra_info))"},{"line_number":138,"context_line":"        except Exception as e:"},{"line_number":139,"context_line":"            raise exception.PciConfigInvalidWhitelist(reason\u003dstr(e))"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        return specs"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAU3%2F%2FgIM%3D","line":138,"in_reply_to":"AAAAUX%2F%2BwTc%3D","updated":"2014-02-27 07:39:14.000000000","message":"Done","commit_id":"c3d922cdef8b944a1d32743e19d53a742dbd97e5"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"7cb1967cb899ba54430e063a453534cde4c95e49","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        if self.spec is None:"},{"line_number":166,"context_line":"            return False"},{"line_number":167,"context_line":"        result \u003d []"},{"line_number":168,"context_line":"        # Match all specs in the list, update the dev dictionary"},{"line_number":169,"context_line":"        # if extra device information provided."},{"line_number":170,"context_line":"        # One device might match multiple spec, so we need match the spec"},{"line_number":171,"context_line":"        # one by one."}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2FUoI%3D","line":168,"updated":"2014-03-06 21:11:30.000000000","message":"result \u003d False","commit_id":"f3acfc409b000f9ad4279071a191c79dce126210"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"7cb1967cb899ba54430e063a453534cde4c95e49","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        # Match all specs in the list, update the dev dictionary"},{"line_number":169,"context_line":"        # if extra device information provided."},{"line_number":170,"context_line":"        # One device might match multiple spec, so we need match the spec"},{"line_number":171,"context_line":"        # one by one."},{"line_number":172,"context_line":"        for spec, extra in self.spec:"},{"line_number":173,"context_line":"            if pci_utils.pci_device_prop_match(dev, [spec]):"},{"line_number":174,"context_line":"                dev.update(extra)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2FUng%3D","line":171,"updated":"2014-03-06 21:11:30.000000000","message":"why one device is allowed to match multiple specs?","commit_id":"f3acfc409b000f9ad4279071a191c79dce126210"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"78aa5119739874ac00e1224a33b73c7e9f5648f2","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        # Match all specs in the list, update the dev dictionary"},{"line_number":169,"context_line":"        # if extra device information provided."},{"line_number":170,"context_line":"        # One device might match multiple spec, so we need match the spec"},{"line_number":171,"context_line":"        # one by one."},{"line_number":172,"context_line":"        for spec, extra in self.spec:"},{"line_number":173,"context_line":"            if pci_utils.pci_device_prop_match(dev, [spec]):"},{"line_number":174,"context_line":"                dev.update(extra)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2B5ck%3D","line":171,"in_reply_to":"AAAAVn%2F%2FUng%3D","updated":"2014-03-11 13:21:03.000000000","message":"this is not one device match multiple specs, it\u0027s because the whitelist might have many specs, ie you define many whitelist items, and each will have own tags, so must to match them one by one and add all extra tags .","commit_id":"f3acfc409b000f9ad4279071a191c79dce126210"},{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"7cb1967cb899ba54430e063a453534cde4c95e49","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        for spec, extra in self.spec:"},{"line_number":173,"context_line":"            if pci_utils.pci_device_prop_match(dev, [spec]):"},{"line_number":174,"context_line":"                dev.update(extra)"},{"line_number":175,"context_line":"                result.append(True)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        return any(result)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2FUoc%3D","line":175,"updated":"2014-03-06 21:11:30.000000000","message":"Why define result as a list? Would the following\n\nresult \u003d True\n\njust do the job?\nIn a matter of fact, \u0027result\u0027 is not needed at all","commit_id":"f3acfc409b000f9ad4279071a191c79dce126210"},{"author":{"_account_id":7543,"name":"Yongli He","email":"yongli.he@intel.com","username":"yongli.he"},"change_message_id":"78aa5119739874ac00e1224a33b73c7e9f5648f2","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        for spec, extra in self.spec:"},{"line_number":173,"context_line":"            if pci_utils.pci_device_prop_match(dev, [spec]):"},{"line_number":174,"context_line":"                dev.update(extra)"},{"line_number":175,"context_line":"                result.append(True)"},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"        return any(result)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAVn%2F%2B5cA%3D","line":175,"in_reply_to":"AAAAVn%2F%2FUoc%3D","updated":"2014-03-11 13:21:03.000000000","message":"any() do the work, and this code does not need  if ... ..","commit_id":"f3acfc409b000f9ad4279071a191c79dce126210"}]}
