)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ec1fc31ae7b7cf8d4c86e2469b21e238626fcfa8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-09-06 08:40:57 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add an example to add more pci devices in nova.conf"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: I71d4c440340db31d22a73a8b3e3abc51771aa7bc"},{"line_number":10,"context_line":"Closes-Bug: #1786870"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"3f79a3b5_6645bab3","line":8,"updated":"2018-09-06 13:30:14.000000000","message":"There should be more words in here.","commit_id":"5548f9e5a2ad3edb19b3273276011c2535812163"}],"nova/conf/pci.py":[{"author":{"_account_id":27621,"name":"Vishakha Agarwal","email":"agarwalvishakha18@gmail.com","username":"Vishakha"},"change_message_id":"1885a1fb302654ab3bc0028cb699e937d3e2543e","unresolved":false,"context_lines":[{"line_number":66,"context_line":"* A JSON list of JSON dictionaries corresponding to the above format. For"},{"line_number":67,"context_line":"  example::"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    alias \u003d [{\"name\": \"QuickAssist\", \"product_id\": \"0443\", "},{"line_number":70,"context_line":"              \"vendor_id\": \"8086\", \"device_type\": \"type-PCI\", "},{"line_number":71,"context_line":"              \"numa_policy\": \"required\"},"},{"line_number":72,"context_line":"              {\"name\": \"QuickAssist\", \"product_id\": \"0444\", "}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_767bfaf3","line":69,"updated":"2018-08-16 06:10:26.000000000","message":"kindly remove the spaces at the end of the lines","commit_id":"8f0093680c18686f0fb2baadb8331967e1e53c1a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ff9f04d694f073b385345ce8e4e0eb1495985dd9","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    alias \u003d {\"name\": \"QuickAssist\", \"product_id\": \"0443\","},{"line_number":69,"context_line":"              \"vendor_id\": \"8086\", \"device_type\": \"type-PCI\","},{"line_number":70,"context_line":"              \"numa_policy\": \"required\"}"},{"line_number":71,"context_line":"    alias \u003d {\"name\": \"QuickAssist\", \"product_id\": \"0444\","},{"line_number":72,"context_line":"              \"vendor_id\": \"8086\", \"device_type\": \"type-PCI\","},{"line_number":73,"context_line":"              \"numa_policy\": \"required\"}"},{"line_number":74,"context_line":"\"\"\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_97b9c9ea","line":71,"range":{"start_line":71,"start_character":22,"end_line":71,"end_character":33},"updated":"2018-08-17 14:10:12.000000000","message":"It\u0027s confusing that both of these have the same name. Is that valid (and does it mean that if you request \"QuickAssist\" you could get either a 0443 or a 0444 device)? Regardless, it would probably be a clearer example if they had different names.\n\nAlso nit, better to match the formatting above (L38-44).","commit_id":"2dd8059ed9a5d0aa806dee440ea7d2cf9a209588"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"4805ff2b7d9c209349e6bc38ccc35cceebe3f2cf","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_2944d91a","line":25,"range":{"start_line":25,"start_character":16,"end_line":25,"end_character":18},"updated":"2018-08-21 16:12:57.000000000","message":"default is an empty list","commit_id":"fdc33364f67e4f70f161aa54ba5d3206654c4c63"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"7480f93748d1021e75337691f2bcfd143b720b50","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_3c7e27e4","line":25,"range":{"start_line":25,"start_character":16,"end_line":25,"end_character":18},"in_reply_to":"3f79a3b5_2944d91a","updated":"2018-09-04 17:08:00.000000000","message":"Oo, sorry, you can\u0027t remove the default value. That\u0027ll cause the default to be None, which will break at [1] with \"TypeError: \u0027NoneType\u0027 object is not iterable\" if the user hasn\u0027t set a value in their config file.\n\nEither restore the default value, or change [2] to something like:\n\n jaliases \u003d CONF.pci.alias or []\n\n[1] https://github.com/openstack/nova/blob/c277b747a9785dddfeb27781739e3c407a4ba704/nova/pci/request.py#L113\n[2] https://github.com/openstack/nova/blob/c277b747a9785dddfeb27781739e3c407a4ba704/nova/pci/request.py#L110","commit_id":"fdc33364f67e4f70f161aa54ba5d3206654c4c63"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"4805ff2b7d9c209349e6bc38ccc35cceebe3f2cf","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"Possible Values:"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* A list of JSON values which describe the aliases. For example::"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    alias \u003d {"},{"line_number":39,"context_line":"      \"name\": \"QuickAssist\","}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a6c0162c","line":36,"range":{"start_line":36,"start_character":2,"end_line":36,"end_character":8},"updated":"2018-08-21 16:12:57.000000000","message":"it says the value a list so we expect the format of [json1, json2, ...]","commit_id":"fdc33364f67e4f70f161aa54ba5d3206654c4c63"},{"author":{"_account_id":25562,"name":"Chen","email":"dstbtgagt@foxmail.com","username":"chenn2"},"change_message_id":"4805ff2b7d9c209349e6bc38ccc35cceebe3f2cf","unresolved":false,"context_lines":[{"line_number":63,"context_line":"    Required NUMA affinity of device. Valid values are: ``legacy``,"},{"line_number":64,"context_line":"    ``preferred`` and ``required``."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"*  Also support multiple aliases. For example::"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    alias \u003d {"},{"line_number":69,"context_line":"      \"name\": \"QuickAssist-1\","},{"line_number":70,"context_line":"      \"product_id\": \"0443\","},{"line_number":71,"context_line":"      \"vendor_id\": \"8086\","},{"line_number":72,"context_line":"      \"device_type\": \"type-PCI\","},{"line_number":73,"context_line":"      \"numa_policy\": \"required\""},{"line_number":74,"context_line":"    }"},{"line_number":75,"context_line":"    alias \u003d {"},{"line_number":76,"context_line":"      \"name\": \"QuickAssist-2\","},{"line_number":77,"context_line":"      \"product_id\": \"0444\","},{"line_number":78,"context_line":"      \"vendor_id\": \"8086\","},{"line_number":79,"context_line":"      \"device_type\": \"type-PCI\","},{"line_number":80,"context_line":"      \"numa_policy\": \"required\""},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":"\"\"\"),"},{"line_number":83,"context_line":"    cfg.MultiStrOpt(\u0027passthrough_whitelist\u0027,"},{"line_number":84,"context_line":"        default\u003d[],"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_e964a1e7","line":81,"range":{"start_line":66,"start_character":0,"end_line":81,"end_character":5},"updated":"2018-08-21 16:12:57.000000000","message":"OK here we tell users how to correctly specify multiple aliases, and surprise its not a list as we expect. So i think we\u0027d better explicitly warn people not enclose the alisas with [] for some reason, as the contradiction to the previous context is enough for getting people confused.","commit_id":"fdc33364f67e4f70f161aa54ba5d3206654c4c63"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"c7dc1e1d9c5f95ef3c737326c5d91c89a2cb69f6","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    Required NUMA affinity of device. Valid values are: ``legacy``,"},{"line_number":63,"context_line":"    ``preferred`` and ``required``."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"*  Also support multiple aliases. For example::"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    alias \u003d {"},{"line_number":68,"context_line":"      \"name\": \"QuickAssist-1\","}],"source_content_type":"text/x-python","patch_set":6,"id":"3f79a3b5_bc69d725","line":65,"range":{"start_line":65,"start_character":8,"end_line":65,"end_character":15},"updated":"2018-09-04 17:08:25.000000000","message":"supports","commit_id":"6f0e000006cfa43e1fc3f4d2bbd25c4e43a9f364"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"474f427573ba5ac5d4f4f9d4ad87e3fd8b82038b","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    title\u003d\u0027PCI passthrough options\u0027)"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":26,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":27,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"3f79a3b5_a5a3e542","line":24,"updated":"2018-09-05 14:18:00.000000000","message":"See PS6 comment about removing the default.","commit_id":"a59c9d415ec0dc0193c43fc5f9c604c6f4500a6a"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"8d77047486498c7f014635d68c61c122ef02365c","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_e10bf4d1","side":"PARENT","line":25,"updated":"2018-09-06 14:09:57.000000000","message":"I don\u0027t think is that what we have to do. We should support both. It seems reasonable to update _get_alias_from_config(). Basically it\u0027s what we do in _parse_white_list_from_config()\n\nSo we are coherent between the two options.","commit_id":"a77f11c9c12baac2b4adbe6a7ad6c8c6c0233e73"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dd7755e8d71d10fb8f44044e189fe168f7d90f19","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_1314434c","side":"PARENT","line":25,"in_reply_to":"3f79a3b5_013b90e9","updated":"2018-09-06 15:21:04.000000000","message":"Functionally it\u0027s correct to do the defaulting here, but from a doc perspective it\u0027s confusing to the user, who then thinks they can specify multiple aliases via a list, which they can\u0027t (see commit message).\n\nThe alternative, changing the actual code to accept a real list, I downvoted at PS2 because we (nova) have committed to not spending more resources on the old PCI code.","commit_id":"a77f11c9c12baac2b4adbe6a7ad6c8c6c0233e73"},{"author":{"_account_id":4690,"name":"melanie witt","display_name":"melwitt","email":"melwittt@gmail.com","username":"melwitt"},"change_message_id":"611b56424b3bfcf696160004610fba8f7cde3afa","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_e9375afd","side":"PARENT","line":25,"in_reply_to":"3f79a3b5_1314434c","updated":"2018-09-06 16:50:23.000000000","message":"I would have thought we should fix the code to accept a real list (assuming a list was the intention when originally implemented and the fact that it doesn\u0027t work is a bug). Did other people say they don\u0027t want to fix this?","commit_id":"a77f11c9c12baac2b4adbe6a7ad6c8c6c0233e73"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"7396f2b4fae6546a76ab90e7a5a38d6f8880cb76","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_013b90e9","side":"PARENT","line":25,"in_reply_to":"3f79a3b5_e10bf4d1","updated":"2018-09-06 14:28:50.000000000","message":"Yeah, I\u0027m still not sure why we\u0027re doing this. This is correct for a MultiStrOpt","commit_id":"a77f11c9c12baac2b4adbe6a7ad6c8c6c0233e73"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"115a08164fa724e62fcda1423639373c56749278","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"pci_opts \u003d ["},{"line_number":24,"context_line":"    cfg.MultiStrOpt(\u0027alias\u0027,"},{"line_number":25,"context_line":"        default\u003d[],"},{"line_number":26,"context_line":"        deprecated_name\u003d\u0027pci_alias\u0027,"},{"line_number":27,"context_line":"        deprecated_group\u003d\u0027DEFAULT\u0027,"},{"line_number":28,"context_line":"        help\u003d\"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_2cd32062","side":"PARENT","line":25,"in_reply_to":"3f79a3b5_e9375afd","updated":"2018-09-06 17:05:19.000000000","message":"Per my comments on PS2, we don\u0027t want to do that (as stephenfin puts it, that would be a feature).\n\nApparently this is really a confusing quirk of MultiStrOpt, which is *designed* to accept multiple values via multiple keys, not via a list passed to one key. But the default is supposed to be specified as what would eventually wind up in code, i.e. an actual list.\n\nAnyway, we discussed this in IRC [1] and agreed the default should be restored; but we might also want to add more words. Will suggest in separate comment.\n\n[1] http://eavesdrop.openstack.org/irclogs/%23openstack-nova/%23openstack-nova.2018-09-06.log.html#t2018-09-06T16:37:52","commit_id":"a77f11c9c12baac2b4adbe6a7ad6c8c6c0233e73"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"115a08164fa724e62fcda1423639373c56749278","unresolved":false,"context_lines":[{"line_number":62,"context_line":"    Required NUMA affinity of device. Valid values are: ``legacy``,"},{"line_number":63,"context_line":"    ``preferred`` and ``required``."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"*  Also supports multiple aliases. For example::"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    alias \u003d {"},{"line_number":68,"context_line":"      \"name\": \"QuickAssist-1\","}],"source_content_type":"text/x-python","patch_set":9,"id":"3f79a3b5_ecc8c8a8","line":65,"range":{"start_line":65,"start_character":3,"end_line":65,"end_character":34},"updated":"2018-09-06 17:05:19.000000000","message":"How about:\n\n\"Supports multiple aliases by repeating the option (not by specifying a list value).\"","commit_id":"2dcc710fb939cf504de3b26a443dc68d4f54f495"}]}
