)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":21103,"name":"Zhijiang Hu","email":"hu.zhijiang@zte.com.cn","username":"huzhj"},"change_message_id":"9dce6c0489a6f6bf685664a78e2e2df1144002d2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Zhou Ya \u003czhou.ya@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-14 16:41:58 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":8,"context_line":"This is the commit of https://bugs.launchpad.net/ironic-python-agent/+bug/1622940"},{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info() function, only vendor and device info are collected."},{"line_number":10,"context_line":"Now we need additional info about numa_node (such as /sys/bus/pci/devices/0000\\:00\\:03.0/numa_node) to help to compare if two baremetal are physically homogenious,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a8ec9b2_786dc831","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":64},"updated":"2016-09-14 08:42:31.000000000","message":"Insert a single blank line after the first line. You should read https://wiki.openstack.org/wiki/GitCommitMessages carefully.","commit_id":"b8baf6c1ad6e3b811a91860282b0029d5f9546a5"},{"author":{"_account_id":21103,"name":"Zhijiang Hu","email":"hu.zhijiang@zte.com.cn","username":"huzhj"},"change_message_id":"9dce6c0489a6f6bf685664a78e2e2df1144002d2","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Zhou Ya \u003czhou.ya@zte.com.cn\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-14 16:41:58 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":8,"context_line":"This is the commit of https://bugs.launchpad.net/ironic-python-agent/+bug/1622940"},{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info() function, only vendor and device info are collected."},{"line_number":10,"context_line":"Now we need additional info about numa_node (such as /sys/bus/pci/devices/0000\\:00\\:03.0/numa_node) to help to compare if two baremetal are physically homogenious,"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a8ec9b2_f8bb9873","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":64},"updated":"2016-09-14 08:42:31.000000000","message":"The first line should be limited to 50 characters, I suggest: Get numa_node info when collecting pci devices info","commit_id":"b8baf6c1ad6e3b811a91860282b0029d5f9546a5"},{"author":{"_account_id":21103,"name":"Zhijiang Hu","email":"hu.zhijiang@zte.com.cn","username":"huzhj"},"change_message_id":"9dce6c0489a6f6bf685664a78e2e2df1144002d2","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2016-09-14 16:41:58 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":8,"context_line":"This is the commit of https://bugs.launchpad.net/ironic-python-agent/+bug/1622940"},{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info() function, only vendor and device info are collected."},{"line_number":10,"context_line":"Now we need additional info about numa_node (such as /sys/bus/pci/devices/0000\\:00\\:03.0/numa_node) to help to compare if two baremetal are physically homogenious,"},{"line_number":11,"context_line":"thus can be quickly added into a OpenStack cluster by using existing homogenious nodes configuration."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a8ec9b2_5803ac73","line":8,"range":{"start_line":8,"start_character":0,"end_line":8,"end_character":81},"updated":"2016-09-14 08:42:31.000000000","message":"No need for this. \"Fixes bug 1622940\" below is enough.","commit_id":"b8baf6c1ad6e3b811a91860282b0029d5f9546a5"},{"author":{"_account_id":21103,"name":"Zhijiang Hu","email":"hu.zhijiang@zte.com.cn","username":"huzhj"},"change_message_id":"9dce6c0489a6f6bf685664a78e2e2df1144002d2","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":8,"context_line":"This is the commit of https://bugs.launchpad.net/ironic-python-agent/+bug/1622940"},{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info() function, only vendor and device info are collected."},{"line_number":10,"context_line":"Now we need additional info about numa_node (such as /sys/bus/pci/devices/0000\\:00\\:03.0/numa_node) to help to compare if two baremetal are physically homogenious,"},{"line_number":11,"context_line":"thus can be quickly added into a OpenStack cluster by using existing homogenious nodes configuration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes bug 1622940"},{"line_number":14,"context_line":"Change-Id: I70b0cb3eff66d67bb8168982acbbf335de0599cd"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a8ec9b2_5849ec8a","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":101},"updated":"2016-09-14 08:42:31.000000000","message":"Subsequent lines should be wrapped at 72 characters","commit_id":"b8baf6c1ad6e3b811a91860282b0029d5f9546a5"},{"author":{"_account_id":21103,"name":"Zhijiang Hu","email":"hu.zhijiang@zte.com.cn","username":"huzhj"},"change_message_id":"ba87bae7536508c06b2580f21239f8d649d47059","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Get numa_node info when collecting pci devices info"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"pci devices info, only vendor and device info are collected."},{"line_number":10,"context_line":"Now additional info about numa_node is needed to help to compare if two baremetal are physically homogenious,"},{"line_number":11,"context_line":"thus can be quickly added into a OpenStack cluster by using existing homogenious nodes configuration."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Fixes bug 1622940"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a8ec9b2_050458be","line":11,"range":{"start_line":9,"start_character":0,"end_line":11,"end_character":101},"updated":"2016-09-14 09:04:14.000000000","message":"Subsequent lines should be wrapped at 72 characters.","commit_id":"02c722a1f4301f6f576740de9f029c9e1f03e2b0"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f7da1cd60d0d97708cbf088276fb142e2820f689","unresolved":false,"context_lines":[{"line_number":12,"context_line":"are physically homogenious, thus can be quickly added into a OpenStack"},{"line_number":13,"context_line":"cluster by using existing homogenious nodes configuration."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Fixes bug 1622940"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I70b0cb3eff66d67bb8168982acbbf335de0599cd"},{"line_number":18,"context_line":"Signed-off-by: Zhou Ya \u003czhou.ya@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a98d1f4_6d03f70d","line":15,"updated":"2016-09-30 05:13:32.000000000","message":"Closes-Bug: #1622940\n\nSee https://wiki.openstack.org/wiki/GitCommitMessages#Summary_of_Git_commit_message_structure","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f7da1cd60d0d97708cbf088276fb142e2820f689","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Fixes bug 1622940"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I70b0cb3eff66d67bb8168982acbbf335de0599cd"},{"line_number":18,"context_line":"Signed-off-by: Zhou Ya \u003czhou.ya@zte.com.cn\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"3a98d1f4_cd140b46","line":18,"updated":"2016-09-30 05:13:32.000000000","message":"not required","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info()"},{"line_number":10,"context_line":"function, only vendor and device info are collected. Now we need"},{"line_number":11,"context_line":"additional info about numa_node to help to compare if two baremetal"},{"line_number":12,"context_line":"are physically homogenious, thus can be quickly added into a OpenStack"},{"line_number":13,"context_line":"cluster by using existing homogenious nodes configuration."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a98d1f4_9946934d","line":11,"range":{"start_line":11,"start_character":58,"end_line":11,"end_character":67},"updated":"2016-09-30 20:28:58.000000000","message":"s/baremetal/baremetal nodes/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"7d116a9768d7bd44714a105b75a4623895ef67d9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info()"},{"line_number":10,"context_line":"function, only vendor and device info are collected. Now we need"},{"line_number":11,"context_line":"additional info about numa_node to help to compare if two baremetal"},{"line_number":12,"context_line":"are physically homogenious, thus can be quickly added into a OpenStack"},{"line_number":13,"context_line":"cluster by using existing homogenious nodes configuration."},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"1a95cdbc_dea2a6ad","line":11,"range":{"start_line":11,"start_character":58,"end_line":11,"end_character":67},"in_reply_to":"3a98d1f4_9946934d","updated":"2016-10-08 01:18:06.000000000","message":"Thank you for minding me this.","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"When collecting pci devices info by using collect_pci_devices_info()"},{"line_number":10,"context_line":"function, only vendor and device info are collected. Now we need"},{"line_number":11,"context_line":"additional info about numa_node to help to compare if two baremetal"},{"line_number":12,"context_line":"are physically homogenious, thus can be quickly added into a OpenStack"},{"line_number":13,"context_line":"cluster by using existing homogenious nodes configuration."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Closes-bug: #1622940"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a98d1f4_1971a3a8","line":12,"range":{"start_line":12,"start_character":15,"end_line":12,"end_character":26},"updated":"2016-09-30 20:28:58.000000000","message":"s/homegenious/homogeneous/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"80f35602f66b21791bf93a3523a821287ab94d8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"78a22be8_5732b244","updated":"2023-10-24 17:57:09.000000000","message":"Change was primarily a rebase.","commit_id":"2f2b14a61a5c00065b4579396375a7b003ba1b71"}],"ironic_python_agent/inspector.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f7da1cd60d0d97708cbf088276fb142e2820f689","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":407,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":408,"context_line":"        except IOError as exc:"},{"line_number":409,"context_line":"            LOG.warning(\u0027Failed to gather vendor id or product id \u0027"},{"line_number":410,"context_line":"                        \u0027from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":411,"context_line":"            continue"},{"line_number":412,"context_line":"        except IndexError as exc:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a98d1f4_2d480f5b","line":409,"updated":"2016-09-30 05:13:32.000000000","message":"This message needs to be updated.","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"fdde3b29d71c7ab36e15cabf2d4219fa21625b37","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":407,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":408,"context_line":"        except IOError as exc:"},{"line_number":409,"context_line":"            LOG.warning(\u0027Failed to gather vendor id or product id \u0027"},{"line_number":410,"context_line":"                        \u0027from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":411,"context_line":"            continue"},{"line_number":412,"context_line":"        except IndexError as exc:"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a98d1f4_905bf686","line":409,"in_reply_to":"3a98d1f4_2d480f5b","updated":"2016-09-30 06:29:35.000000000","message":"OK,I will update it,thank you very much","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":407,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":408,"context_line":"        except IOError as exc:"},{"line_number":409,"context_line":"            LOG.warning(\u0027Failed to gather vendor id or product id \u0027"},{"line_number":410,"context_line":"                        \u0027or numa_node id from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":411,"context_line":"            continue"},{"line_number":412,"context_line":"        except IndexError as exc:"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a98d1f4_1830d2e7","line":409,"updated":"2016-09-30 14:06:33.000000000","message":"How about: ... vendor id, product id, or numa_node ...","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"e4af9130f45c2c908eeb1e5c9b583c8f725f639c","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":407,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":408,"context_line":"        except IOError as exc:"},{"line_number":409,"context_line":"            LOG.warning(\u0027Failed to gather vendor id or product id \u0027"},{"line_number":410,"context_line":"                        \u0027or numa_node id from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":411,"context_line":"            continue"},{"line_number":412,"context_line":"        except IndexError as exc:"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a95cdbc_beb4fa34","line":409,"in_reply_to":"3a98d1f4_1830d2e7","updated":"2016-10-08 01:15:59.000000000","message":"Done","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            continue"},{"line_number":412,"context_line":"        except IndexError as exc:"},{"line_number":413,"context_line":"            LOG.warning(\u0027Wrong format of vendor id or product id or \u0027"},{"line_number":414,"context_line":"                        \u0027numa_node id in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":415,"context_line":"            continue"},{"line_number":416,"context_line":"        LOG.debug("},{"line_number":417,"context_line":"            \u0027Found a PCI device with vendor id %s and \u0027"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a98d1f4_7d42a869","line":414,"updated":"2016-09-30 14:06:33.000000000","message":"I don\u0027t think the numa_node parsing can cause an IndexError. The other ones can because they do a split and then an index.","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                        \u0027numa_node id in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":415,"context_line":"            continue"},{"line_number":416,"context_line":"        LOG.debug("},{"line_number":417,"context_line":"            \u0027Found a PCI device with vendor id %s and \u0027"},{"line_number":418,"context_line":"            \u0027product id %s and numa_node id %s\u0027,"},{"line_number":419,"context_line":"            vendor, device, numa_node)"},{"line_number":420,"context_line":"        pci_devices_info.append({\u0027vendor_id\u0027: vendor,"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a98d1f4_f88ec677","line":417,"updated":"2016-09-30 14:06:33.000000000","message":"... vendor id %s, product id %s, and numa_node id %s ...","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"e4af9130f45c2c908eeb1e5c9b583c8f725f639c","unresolved":false,"context_lines":[{"line_number":414,"context_line":"                        \u0027numa_node id in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":415,"context_line":"            continue"},{"line_number":416,"context_line":"        LOG.debug("},{"line_number":417,"context_line":"            \u0027Found a PCI device with vendor id %s and \u0027"},{"line_number":418,"context_line":"            \u0027product id %s and numa_node id %s\u0027,"},{"line_number":419,"context_line":"            vendor, device, numa_node)"},{"line_number":420,"context_line":"        pci_devices_info.append({\u0027vendor_id\u0027: vendor,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a95cdbc_1ef16e01","line":417,"in_reply_to":"3a98d1f4_f88ec677","updated":"2016-10-08 01:15:59.000000000","message":"thank you for your advice，I will modify this","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"1bb41e6f683a3d0a699329c7d39ad357b9cc7419","unresolved":false,"context_lines":[{"line_number":414,"context_line":"        try:"},{"line_number":415,"context_line":"            with open(os.path.join(pci_devices_path, subdir,"},{"line_number":416,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":417,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":418,"context_line":"            LOG.debug("},{"line_number":419,"context_line":"                \u0027Found a PCI device with vendor id %s, \u0027"},{"line_number":420,"context_line":"                \u0027product id %s and numa_node id %s\u0027,"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_1b9598e3","line":417,"updated":"2016-10-28 16:02:48.000000000","message":"You brought up the case where you can open the numa_node file, but the file is empty. Since that case would not raise IndexError, you will have to check for an empty file/numa_node string, and handle that situation appropriately.","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"d62eb2674d5240f5c139632681d8420ea18b1d38","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_6a541954","line":435,"updated":"2016-10-26 15:56:19.000000000","message":"What could raise an IndexError in the try block?","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"581c96f857742153d769958fb4e6b17dfff60ad3","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_4c6e5402","line":435,"in_reply_to":"ba5da102_1b603835","updated":"2016-10-29 03:21:28.000000000","message":"Thank you very much for your advice,and after I tested on my evn.I think you are right.It is a great helpful of you to give me such advice.\nAnd what is your opinion of line 409 above,does it need to be removed too?","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"1accc8e4bbe34c5a081b8b61429e511f6fec4c11","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_c6806749","line":435,"in_reply_to":"ba5da102_4c6e5402","updated":"2016-10-31 16:09:57.000000000","message":"409 doesn\u0027t need to be removed. The try block starting on line 395 includes two lines which use subscript operators, namely 401 and 404. It\u0027s entirely possible for those lines to throw IndexError exceptions.","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"d032c6845bd6afea944d131d7d77542653b55085","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_7e23f705","line":435,"in_reply_to":"ba5da102_6a541954","updated":"2016-10-26 19:32:55.000000000","message":"Agree with Mario\u0027s question here. It looks like the try/except blocks above *could* run into an IndexError thanks to the use of the subscript operator on lines 401 and 404. I don\u0027t see a similar use in the try block beginning on line 415. You can probably remove the except block dealing with IndexError here.","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"bc46b1d809d18c27ae38e76d02ce1efea6b323ff","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_51d1c1cc","line":435,"in_reply_to":"ba5da102_6a541954","updated":"2016-10-27 02:14:22.000000000","message":"Done","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"ee2a808ed6344e6ae4947ebdc615b2357d1e80e7","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_f4c1e32f","line":435,"in_reply_to":"ba5da102_7e23f705","updated":"2016-10-27 03:45:03.000000000","message":"Sometimes when numa_node file is exist，but this file is empty，I think it will raise this except，do you think so？","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"bc46b1d809d18c27ae38e76d02ce1efea6b323ff","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_31cc4d35","line":435,"in_reply_to":"ba5da102_7e23f705","updated":"2016-10-27 02:14:22.000000000","message":"Thank you for your advice,I will modify this.","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"1bb41e6f683a3d0a699329c7d39ad357b9cc7419","unresolved":false,"context_lines":[{"line_number":432,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":433,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":434,"context_line":"            continue"},{"line_number":435,"context_line":"        except IndexError as exc:"},{"line_number":436,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":437,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":438,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":18,"id":"ba5da102_1b603835","line":435,"in_reply_to":"ba5da102_f4c1e32f","updated":"2016-10-28 16:02:48.000000000","message":"I don\u0027t think so. According to Python docs, open() raises IOError if it can\u0027t open the file. Also, file.read() returns an empty string if the file is empty, and shouldn\u0027t raise an exception. Additionally, \u0027\u0027.strip() returns \u0027\u0027. So I don\u0027t see how you would run into an IndexError here. \n\nIs there a test case you can come up with that does raise IndexError in the try block starting on line 415?","commit_id":"c67041dffa4e38c919b72e20c82df7f7dfcb0428"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"6c1890a62b04d047cd52f9f88604d52b2370f335","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                        \u0027from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":408,"context_line":"            continue"},{"line_number":409,"context_line":"        except IndexError as exc:"},{"line_number":410,"context_line":"            LOG.warning(\u0027Wrong format of vendor id or product id \u0027"},{"line_number":411,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":412,"context_line":"            continue"},{"line_number":413,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5da102_c9443376","line":410,"updated":"2016-10-27 22:18:59.000000000","message":"please add a translation marker _LW here.","commit_id":"852a5f2a8387fe94d5eb03eef805f7764f287c98"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"198e2a9af3d1483d1f0c3a1df89dd7b23a7b61f2","unresolved":false,"context_lines":[{"line_number":407,"context_line":"                        \u0027from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":408,"context_line":"            continue"},{"line_number":409,"context_line":"        except IndexError as exc:"},{"line_number":410,"context_line":"            LOG.warning(\u0027Wrong format of vendor id or product id \u0027"},{"line_number":411,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":412,"context_line":"            continue"},{"line_number":413,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5da102_b2bae6df","line":410,"in_reply_to":"ba5da102_c9443376","updated":"2016-10-29 06:12:31.000000000","message":"LOG.warning(_LW（\u0027Wrong format of vendor id or product id \u0027\n                 \u0027in PCI device %(subdir)s: %(exc)s\u0027), {\u0027subdir\u0027:subdir,\u0027exc\u0027:exc})\nyou mean write it like this?But I didn\u0027t see i18n import in this file,do I have to add i18n import ?","commit_id":"852a5f2a8387fe94d5eb03eef805f7764f287c98"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"6c1890a62b04d047cd52f9f88604d52b2370f335","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":412,"context_line":"            continue"},{"line_number":413,"context_line":"        try:"},{"line_number":414,"context_line":"            with open(os.path.join(pci_devices_path, subdir,"},{"line_number":415,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":416,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":417,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5da102_cc57e100","line":414,"updated":"2016-10-27 22:18:59.000000000","message":"I think this should be refactored, the difference is only in debug messages and keys that we add to pci_devices_info list.","commit_id":"852a5f2a8387fe94d5eb03eef805f7764f287c98"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"9a82008f2b13f4255270a2fd30589686a8ebe358","unresolved":false,"context_lines":[{"line_number":411,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":412,"context_line":"            continue"},{"line_number":413,"context_line":"        try:"},{"line_number":414,"context_line":"            with open(os.path.join(pci_devices_path, subdir,"},{"line_number":415,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":416,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":417,"context_line":"            LOG.debug("}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5da102_faaff3e0","line":414,"in_reply_to":"ba5da102_cc57e100","updated":"2016-10-28 04:06:15.000000000","message":"So what\u0027s your opinion if I moved numa_node collection info to try/except block before like patch set 17？Will patch set 17 will break the collection of PCI device？","commit_id":"852a5f2a8387fe94d5eb03eef805f7764f287c98"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"6c1890a62b04d047cd52f9f88604d52b2370f335","unresolved":false,"context_lines":[{"line_number":422,"context_line":"                                     \u0027product_id\u0027: device,"},{"line_number":423,"context_line":"                                     \u0027numa_node_id\u0027: numa_node})"},{"line_number":424,"context_line":"        except IOError as exc:"},{"line_number":425,"context_line":"            LOG.warning(\u0027Failed to gather numa_node id \u0027"},{"line_number":426,"context_line":"                        \u0027from PCI device %s: %s\u0027, subdir, exc)"},{"line_number":427,"context_line":"            LOG.debug("},{"line_number":428,"context_line":"                \u0027Found a PCI device with vendor id %s and \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5da102_095f0b42","line":425,"updated":"2016-10-27 22:18:59.000000000","message":"ditto","commit_id":"852a5f2a8387fe94d5eb03eef805f7764f287c98"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"6c1890a62b04d047cd52f9f88604d52b2370f335","unresolved":false,"context_lines":[{"line_number":432,"context_line":"                                     \u0027product_id\u0027: device})"},{"line_number":433,"context_line":"            continue"},{"line_number":434,"context_line":"        except IndexError as exc:"},{"line_number":435,"context_line":"            LOG.warning(\u0027Wrong format of numa_node id \u0027"},{"line_number":436,"context_line":"                        \u0027in PCI device %s: %s\u0027, subdir, exc)"},{"line_number":437,"context_line":"            LOG.debug("},{"line_number":438,"context_line":"                \u0027Found a PCI device with vendor id %s and \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"ba5da102_295ccf4a","line":435,"updated":"2016-10-27 22:18:59.000000000","message":"ditto","commit_id":"852a5f2a8387fe94d5eb03eef805f7764f287c98"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"bbd8816366129fda0617afcc4e4d3a99b46d01cf","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        try:"},{"line_number":414,"context_line":"            with open(os.path.join(pci_devices_path, subdir,"},{"line_number":415,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":416,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_f9698c26","line":416,"updated":"2016-10-31 16:50:31.000000000","message":"Can the numa_node file be empty? What should be done in that case? My intuition is log a warning/error and continue, but I\u0027m not certain.","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"cc80ce3af12175e478fca2658be0237d44255061","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        try:"},{"line_number":414,"context_line":"            with open(os.path.join(pci_devices_path, subdir,"},{"line_number":415,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":416,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_9d221f51","line":416,"in_reply_to":"ba5da102_7fa9cade","updated":"2016-11-01 14:32:33.000000000","message":"The value for numa_node_id would just be an empty string (\"\"). I\u0027m fine with either removing the key from the dict as we do with IOError or keeping it as an empty string, but the behavior should be tested.\n\nI\u0027m not sure if this is even possible with modern (post-October 2014) kernels. Documentation says that it should be -1 if NUMA information is missing: https://www.kernel.org/doc/Documentation/ABI/testing/sysfs-bus-pci\n\nGiven that this is a new-ish addition to sysfs, though, I think a test case should be written for the empty string case.","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"d0e58c098e9e5890e2da4c7721f2a967ccd1d01d","unresolved":false,"context_lines":[{"line_number":413,"context_line":"        try:"},{"line_number":414,"context_line":"            with open(os.path.join(pci_devices_path, subdir,"},{"line_number":415,"context_line":"                                   \u0027numa_node\u0027)) as vendor_numa_node:"},{"line_number":416,"context_line":"                numa_node \u003d vendor_numa_node.read().strip()"},{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_7fa9cade","line":416,"in_reply_to":"ba5da102_f9698c26","updated":"2016-11-01 10:40:13.000000000","message":"I think when the numa_node file is empty.The numa_node info in pci_device_info will be null.Is it necessary to continue?","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":22128,"name":"Shipingzhu","email":"zhu.shiping@zte.com.cn","username":"Shiping"},"change_message_id":"1019479d280ed0622250ee9e087226794683ee43","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"},{"line_number":420,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":421,"context_line":"                                     \u0027product_id\u0027: device,"},{"line_number":422,"context_line":"                                     \u0027numa_node_id\u0027: numa_node})"},{"line_number":423,"context_line":"        except IOError as exc:"},{"line_number":424,"context_line":"            LOG.warning(\u0027Failed to gather numa_node id \u0027"},{"line_number":425,"context_line":"                        \u0027from PCI device %s: %s\u0027, subdir, exc)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_1c272065","line":422,"range":{"start_line":420,"start_character":0,"end_line":422,"end_character":64},"updated":"2016-10-31 06:44:07.000000000","message":"Looks good to add numa info!","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"b8e9f49bac6c7bde33082733b787095c51dabc3b","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"},{"line_number":420,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":421,"context_line":"                                     \u0027product_id\u0027: device,"},{"line_number":422,"context_line":"                                     \u0027numa_node_id\u0027: numa_node})"},{"line_number":423,"context_line":"        except IOError as exc:"}],"source_content_type":"text/x-python","patch_set":31,"id":"9a629dbe_7edfd768","line":420,"updated":"2016-11-10 14:22:16.000000000","message":"Will it work for your use case, if the numa_node key could be added in { \"inventory\": { \"interfaces\": [ \"numa_node\": \u003cnuma node\u003e ] } }.\nhttps://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/hardware.py#L505","commit_id":"a0aa45c583c76ba12e96f6eef49139510dc6c9f3"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"adabf71c14ba17354fef20a18938c64ee3a4b593","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"},{"line_number":420,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":421,"context_line":"                                     \u0027product_id\u0027: device,"},{"line_number":422,"context_line":"                                     \u0027numa_node_id\u0027: numa_node})"},{"line_number":423,"context_line":"        except IOError as exc:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_d2a4beba","line":420,"in_reply_to":"7a77a97e_d4a031a2","updated":"2016-11-16 09:49:52.000000000","message":"Yes, I was thinking in similar lines (numa\u003d_get_device_info(interface_name, \u0027net\u0027, \u0027numa_node\u0027)). \n\nIIUC, this data structure does not uniquely specify the NIC ordering or device name for each of the vendorid/product id.  I have a requirement where I would need the numa node associated with each NIC identified by name or ordering. I have no objections in keeping the numa node info here, but was thinking we could avoid data duplication, if we can store this in a common place.  I\u0027ve proposed a spec [1] for getting the NUMA node information which is still under review. \n[1] https://review.openstack.org/#/c/396147/","commit_id":"a0aa45c583c76ba12e96f6eef49139510dc6c9f3"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"ab9b83ca701dbc535b90584ee0a396cba00e0706","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            LOG.debug("},{"line_number":418,"context_line":"                \u0027Found a PCI device with vendor id %s, product id %s \u0027"},{"line_number":419,"context_line":"                \u0027and numa_node id %s\u0027, vendor, device, numa_node)"},{"line_number":420,"context_line":"            pci_devices_info.append({\u0027vendor_id\u0027: vendor,"},{"line_number":421,"context_line":"                                     \u0027product_id\u0027: device,"},{"line_number":422,"context_line":"                                     \u0027numa_node_id\u0027: numa_node})"},{"line_number":423,"context_line":"        except IOError as exc:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_d4a031a2","line":420,"in_reply_to":"9a629dbe_7edfd768","updated":"2016-11-16 07:24:08.000000000","message":"thank you for your suggest @Karthik S.\nso，your opinion is to add code like this when numa exist?  \"numa\u003d_get_device_info(interface_name, \u0027net\u0027, \u0027numa_node\u0027))\"\nhttps://github.com/openstack/ironic-python-agent/blob/master/ironic_python_agent/hardware.py#L511","commit_id":"a0aa45c583c76ba12e96f6eef49139510dc6c9f3"}],"ironic_python_agent/tests/unit/test_inspector.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f7da1cd60d0d97708cbf088276fb142e2820f689","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        mock_listdir.return_value \u003d subdirs"},{"line_number":481,"context_line":"        mock_isdir.return_value \u003d True"},{"line_number":482,"context_line":"        reads \u003d [\u00270x1234\u0027, \u00270x5678\u0027, \u0027-1\u0027, \u00270x9876\u0027, IOError, IndexError,"},{"line_number":483,"context_line":"                 \u00270x5432\u0027, \u0027-1\u0027]"},{"line_number":484,"context_line":"        expected_pci_devices \u003d [{\u0027vendor_id\u0027: \u00271234\u0027, \u0027product_id\u0027: \u00275678\u0027,"},{"line_number":485,"context_line":"                                 \u0027numa_node_id\u0027: \u0027-1\u0027}]"},{"line_number":486,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a98d1f4_0dc0b37a","line":483,"range":{"start_line":483,"start_character":26,"end_line":483,"end_character":31},"updated":"2016-09-30 05:13:32.000000000","message":"Is this necessary?","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f7da1cd60d0d97708cbf088276fb142e2820f689","unresolved":false,"context_lines":[{"line_number":491,"context_line":"            inspector.collect_pci_devices_info(self.data, self.failures)"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # note(sborkows): due to throwing IOError, the corresponding mock_open"},{"line_number":494,"context_line":"        # will not be called, so there are 5 mock_open calls in total"},{"line_number":495,"context_line":"        self.assertEqual(6, mock_open.call_count)"},{"line_number":496,"context_line":"        self.assertListEqual(expected_pci_devices, self.data[\u0027pci_devices\u0027])"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a98d1f4_2d31efec","line":494,"range":{"start_line":494,"start_character":43,"end_line":494,"end_character":44},"updated":"2016-09-30 05:13:32.000000000","message":"This comment is now wrong.","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"fdde3b29d71c7ab36e15cabf2d4219fa21625b37","unresolved":false,"context_lines":[{"line_number":491,"context_line":"            inspector.collect_pci_devices_info(self.data, self.failures)"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # note(sborkows): due to throwing IOError, the corresponding mock_open"},{"line_number":494,"context_line":"        # will not be called, so there are 5 mock_open calls in total"},{"line_number":495,"context_line":"        self.assertEqual(6, mock_open.call_count)"},{"line_number":496,"context_line":"        self.assertListEqual(expected_pci_devices, self.data[\u0027pci_devices\u0027])"},{"line_number":497,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a98d1f4_70cbca1e","line":494,"range":{"start_line":494,"start_character":43,"end_line":494,"end_character":44},"in_reply_to":"3a98d1f4_2d31efec","updated":"2016-09-30 06:29:35.000000000","message":"It\u0027s very nice of you .I will modify it.Thank you very much.","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        mock_listdir.return_value \u003d subdirs"},{"line_number":481,"context_line":"        mock_isdir.return_value \u003d True"},{"line_number":482,"context_line":"        reads \u003d [\u00270x1234\u0027, \u00270x5678\u0027, \u0027-1\u0027, \u00270x9876\u0027, IOError, IndexError,"},{"line_number":483,"context_line":"                 \u00270x5432\u0027, \u0027-1\u0027]"},{"line_number":484,"context_line":"        expected_pci_devices \u003d [{\u0027vendor_id\u0027: \u00271234\u0027, \u0027product_id\u0027: \u00275678\u0027,"},{"line_number":485,"context_line":"                                 \u0027numa_node_id\u0027: \u0027-1\u0027}]"},{"line_number":486,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a98d1f4_38d2ee5c","line":483,"range":{"start_line":483,"start_character":27,"end_line":483,"end_character":31},"updated":"2016-09-30 14:06:33.000000000","message":"I asked before. Is this necessary?","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"e4af9130f45c2c908eeb1e5c9b583c8f725f639c","unresolved":false,"context_lines":[{"line_number":480,"context_line":"        mock_listdir.return_value \u003d subdirs"},{"line_number":481,"context_line":"        mock_isdir.return_value \u003d True"},{"line_number":482,"context_line":"        reads \u003d [\u00270x1234\u0027, \u00270x5678\u0027, \u0027-1\u0027, \u00270x9876\u0027, IOError, IndexError,"},{"line_number":483,"context_line":"                 \u00270x5432\u0027, \u0027-1\u0027]"},{"line_number":484,"context_line":"        expected_pci_devices \u003d [{\u0027vendor_id\u0027: \u00271234\u0027, \u0027product_id\u0027: \u00275678\u0027,"},{"line_number":485,"context_line":"                                 \u0027numa_node_id\u0027: \u0027-1\u0027}]"},{"line_number":486,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"1a95cdbc_1e3fae87","line":483,"range":{"start_line":483,"start_character":27,"end_line":483,"end_character":31},"in_reply_to":"3a98d1f4_38d2ee5c","updated":"2016-10-08 01:15:59.000000000","message":"Done","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"cc80ce3af12175e478fca2658be0237d44255061","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        self.assertEqual(3 * len(subdirs), mock_open.call_count)"},{"line_number":473,"context_line":"        self.assertListEqual(expected_pci_devices, self.data[\u0027pci_devices\u0027])"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        mock_open \u003d mock.mock_open()"},{"line_number":476,"context_line":"        with mock.patch(\u0027six.moves.builtins.open\u0027, mock_open):"},{"line_number":477,"context_line":"            mock_read \u003d mock_open.return_value.read"},{"line_number":478,"context_line":"            mock_read.side_effect \u003d reads_no_numa"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_5d8087f7","line":475,"updated":"2016-11-01 14:32:33.000000000","message":"I think this should be kept as a separate test case.\n\nYou\u0027re testing two scenarios here: one where there\u0027s something that went wrong with reading the NUMA info for a device, and one where you successfully got the NUMA info for a device.\n\nYou can call it something like \"test_success_no_numa\"","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"8c30ef3c445b2ad01de1fc19ab4250eaba16ccda","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        self.assertEqual(3 * len(subdirs), mock_open.call_count)"},{"line_number":473,"context_line":"        self.assertListEqual(expected_pci_devices, self.data[\u0027pci_devices\u0027])"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        mock_open \u003d mock.mock_open()"},{"line_number":476,"context_line":"        with mock.patch(\u0027six.moves.builtins.open\u0027, mock_open):"},{"line_number":477,"context_line":"            mock_read \u003d mock_open.return_value.read"},{"line_number":478,"context_line":"            mock_read.side_effect \u003d reads_no_numa"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_edf0b1ff","line":475,"in_reply_to":"ba5da102_5d8087f7","updated":"2016-11-02 08:51:57.000000000","message":"It is reasonable to add a function named \u0027test_success_no_numa\u0027 to test the no numa circumstance.\nAnd I will add a test_case when numa file is empty.\nThank you very much for giving me such advice.","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"cc80ce3af12175e478fca2658be0237d44255061","unresolved":false,"context_lines":[{"line_number":515,"context_line":"        self.assertEqual(6, mock_open.call_count)"},{"line_number":516,"context_line":"        self.assertListEqual(expected_pci_devices, self.data[\u0027pci_devices\u0027])"},{"line_number":517,"context_line":""},{"line_number":518,"context_line":"        mock_open \u003d mock.mock_open()"},{"line_number":519,"context_line":"        with mock.patch(\u0027six.moves.builtins.open\u0027, mock_open):"},{"line_number":520,"context_line":"            mock_read \u003d mock_open.return_value.read"},{"line_number":521,"context_line":"            mock_read.side_effect \u003d reads_no_numa"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_3d0bd38f","line":518,"updated":"2016-11-01 14:32:33.000000000","message":"I also think this test case should be separated. Something like \"test_bad_pci_device_info_no_numa\"","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"cc80ce3af12175e478fca2658be0237d44255061","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            inspector.collect_pci_devices_info(self.data, self.failures)"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        # note(sborkows): due to throwing IOError, the corresponding mock_open"},{"line_number":525,"context_line":"        # will not be called, so there are 5 mock_open calls in total"},{"line_number":526,"context_line":"        self.assertEqual(6, mock_open.call_count)"},{"line_number":527,"context_line":"        self.assertListEqual(expected_pci_devices_no_numa,"},{"line_number":528,"context_line":"                             self.data[\u0027pci_devices\u0027])"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_9da5bfa3","line":525,"range":{"start_line":525,"start_character":43,"end_line":525,"end_character":44},"updated":"2016-11-01 14:32:33.000000000","message":"This comment doesn\u0027t match the code, there are 6 open calls below.","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":13295,"name":"Mario Villaplana","email":"mario.villaplana@gmail.com","username":"mariojv"},"change_message_id":"cc80ce3af12175e478fca2658be0237d44255061","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        self.assertEqual(6, mock_open.call_count)"},{"line_number":527,"context_line":"        self.assertListEqual(expected_pci_devices_no_numa,"},{"line_number":528,"context_line":"                             self.data[\u0027pci_devices\u0027])"},{"line_number":529,"context_line":""},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"@mock.patch.object(utils, \u0027get_agent_params\u0027, lambda: {\u0027BOOTIF\u0027: \u002701-cdef\u0027})"},{"line_number":532,"context_line":"@mock.patch.object(hardware, \u0027dispatch_to_managers\u0027, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"ba5da102_7d70ebdc","line":529,"updated":"2016-11-01 14:32:33.000000000","message":"I think an additional test case where numa_node is empty should also be here, given Clif\u0027s concerns about the behavior if the file can be empty.","commit_id":"da2fae74780a10c261f4aff180a181badd9a25bb"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"e6d03b23547a3efef87f206d48793ac4d2880b3c","unresolved":false,"context_lines":[{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    @mock.patch.object(os.path, \u0027isdir\u0027, autospec\u003dTrue)"},{"line_number":492,"context_line":"    def test_success_numa_empty(self, mock_isdir, mock_listdir):"},{"line_number":493,"context_line":"        subdirs \u003d [\u0027foo\u0027, \u0027bar\u0027]"},{"line_number":494,"context_line":"        mock_listdir.return_value \u003d subdirs"},{"line_number":495,"context_line":"        mock_isdir.return_value \u003d True"},{"line_number":496,"context_line":"        reads_numa_empty \u003d [\u00270x1234\u0027, \u00270x5678\u0027, \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a71b18c_f992f6f4","line":493,"updated":"2016-12-06 18:09:11.000000000","message":"Since test_success_no_numa and test_success_numa_empty are so similar, can you refactor them into one function that is called from each test case?","commit_id":"04b86331cf0f3c42580d5447611b5c25899d47f7"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"51beca101e440459e3b0530da2db7b398199dbaf","unresolved":false,"context_lines":[{"line_number":490,"context_line":""},{"line_number":491,"context_line":"    @mock.patch.object(os.path, \u0027isdir\u0027, autospec\u003dTrue)"},{"line_number":492,"context_line":"    def test_success_numa_empty(self, mock_isdir, mock_listdir):"},{"line_number":493,"context_line":"        subdirs \u003d [\u0027foo\u0027, \u0027bar\u0027]"},{"line_number":494,"context_line":"        mock_listdir.return_value \u003d subdirs"},{"line_number":495,"context_line":"        mock_isdir.return_value \u003d True"},{"line_number":496,"context_line":"        reads_numa_empty \u003d [\u00270x1234\u0027, \u00270x5678\u0027, \u0027\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a71b18c_61445d49","line":493,"in_reply_to":"3a71b18c_f992f6f4","updated":"2016-12-07 02:54:54.000000000","message":"Thank you for your advice.\nI will consider your advice and modify this.","commit_id":"04b86331cf0f3c42580d5447611b5c25899d47f7"},{"author":{"_account_id":14228,"name":"Clif Houck","email":"me@clifhouck.com","username":"clif_h"},"change_message_id":"e6d03b23547a3efef87f206d48793ac4d2880b3c","unresolved":false,"context_lines":[{"line_number":543,"context_line":""},{"line_number":544,"context_line":"    @mock.patch.object(os.path, \u0027isdir\u0027, autospec\u003dTrue)"},{"line_number":545,"context_line":"    def test_bad_pci_device_info_no_numa(self, mock_isdir, mock_listdir):"},{"line_number":546,"context_line":"        subdirs \u003d [\u0027foo\u0027, \u0027bar\u0027, \u0027baz\u0027]"},{"line_number":547,"context_line":"        mock_listdir.return_value \u003d subdirs"},{"line_number":548,"context_line":"        mock_isdir.return_value \u003d True"},{"line_number":549,"context_line":"        reads_no_numa \u003d [\u00270x1234\u0027, \u00270x5678\u0027, IOError, \u00270x9876\u0027,"}],"source_content_type":"text/x-python","patch_set":32,"id":"3a71b18c_f9fbd644","line":546,"updated":"2016-12-06 18:09:11.000000000","message":"Since this is seemingly a copy-paste of test_pad_pci_device_info, except numa_node_id is missing, I wonder if you can refactor both these functions in order to avoid duplicating code. For example, make expected_pci_devices{_no_numa} an argument to the function.","commit_id":"04b86331cf0f3c42580d5447611b5c25899d47f7"}],"releasenotes/notes/get_numa_node-eeab34a92739b6f6.yaml":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"f7da1cd60d0d97708cbf088276fb142e2820f689","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    When collecting pci devices info by using collect_pci_devices_info() function, only vendor and device info are collected. Now we need additional info about numa_node (such as /sys/bus/pci/devices/0000\\:00\\:03.0/numa_node) to help to compare if two baremetal are physically homogenious, thus can be quickly added into a OpenStack cluster by using existing homogenious nodes configuration."}],"source_content_type":"text/x-yaml","patch_set":7,"id":"3a98d1f4_6d2a1780","line":4,"updated":"2016-09-30 05:13:32.000000000","message":"Can this line be wrapped? At around 80 characters is fine.\n\nAlso: homogeneous","commit_id":"e8a8ad753f04565cef6d486e96b7c41b4d7c29e5"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_b8d0be20","line":3,"updated":"2016-09-30 14:06:33.000000000","message":"This is a \"run-on\" sentence","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_563e9828","line":3,"in_reply_to":"3a98d1f4_b8d0be20","updated":"2016-09-30 20:28:58.000000000","message":"How about this?\n\ns/get/Adds support to get/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"e4af9130f45c2c908eeb1e5c9b583c8f725f639c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"1a95cdbc_1eb24e06","line":3,"in_reply_to":"3a98d1f4_b8d0be20","updated":"2016-10-08 01:15:59.000000000","message":"It\u0027s very nice of you to give me advice,I will dive in this and modify these errors.Thank you very much.","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_f86a4680","line":4,"range":{"start_line":4,"start_character":50,"end_line":4,"end_character":61},"updated":"2016-09-30 14:06:33.000000000","message":"This is confusing me. missing space? period?","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_36566c5c","line":4,"range":{"start_line":4,"start_character":53,"end_line":4,"end_character":54},"updated":"2016-09-30 20:28:58.000000000","message":"s/,data/. Data/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_566cd834","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":7},"updated":"2016-09-30 20:28:58.000000000","message":"s/add/and adds/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_98e062fc","line":5,"range":{"start_line":5,"start_character":66,"end_line":5,"end_character":69},"updated":"2016-09-30 14:06:33.000000000","message":"added","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_f8188620","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":49},"updated":"2016-09-30 14:06:33.000000000","message":"missing space","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_3604ac48","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":53},"updated":"2016-09-30 20:28:58.000000000","message":"s/,this/ and this/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"6ac3451efafe56990f00f10e1b9ea5651619f19f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_9debf477","line":6,"range":{"start_line":6,"start_character":55,"end_line":6,"end_character":66},"updated":"2016-09-30 14:06:33.000000000","message":"homogeneous","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":19686,"name":"Ramamani Yeleswarapu","email":"ramamani.yeleswarapu@intel.com","username":"Rama_Y"},"change_message_id":"5a57e9b65bad9abd6d8cfdf99df8909189beb47f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - get pci device\u0027s numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    add new data of numa_node_id in \"pci_devices\" key,data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory,this new data is add"},{"line_number":6,"context_line":"    to help to compare if two baremetal are physically homogenious"}],"source_content_type":"text/x-yaml","patch_set":11,"id":"3a98d1f4_968e60ce","line":6,"range":{"start_line":6,"start_character":30,"end_line":6,"end_character":39},"updated":"2016-09-30 20:28:58.000000000","message":"s/baremetal/baremetal nodes/","commit_id":"886cef55747f9d21be6279a6cc086c6644d06f2c"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"d8f0d861369536ac48956bef31f2ef76c3646071","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Adds numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    adds new data of numa_node_id in \"pci_devices\" key, data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory, this new data is added"},{"line_number":6,"context_line":"    to help to compare if two nodes are physically homogeneous"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1a95cdbc_2a37adff","line":6,"updated":"2016-10-10 07:44:34.000000000","message":"nit: to be consistent with other release notes dot should be added to the end.","commit_id":"7a7f21145cac64aeb65447cefeddf1a713b4ad08"},{"author":{"_account_id":22274,"name":"zhouya","email":"zhou.ya@zte.com.cn","username":"ZhouYa"},"change_message_id":"289bf703b4aff1702106fadd7df9f9087cb4f9b3","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - Adds numa_node info when collecting pci devices info"},{"line_number":4,"context_line":"    adds new data of numa_node_id in \"pci_devices\" key, data is"},{"line_number":5,"context_line":"    gathered from /sys/bus/pci/devices directory, this new data is added"},{"line_number":6,"context_line":"    to help to compare if two nodes are physically homogeneous"}],"source_content_type":"text/x-yaml","patch_set":16,"id":"1a95cdbc_5e883a71","line":6,"in_reply_to":"1a95cdbc_2a37adff","updated":"2016-10-10 07:52:38.000000000","message":"Thank you for your advice，I will modify this to consist with other release notes","commit_id":"7a7f21145cac64aeb65447cefeddf1a713b4ad08"}]}
