)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"7a415f47170c408aad131a86706d8e606185d974","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"80d56786_f5cf3e75","updated":"2021-11-10 13:25:10.000000000","message":"recheck","commit_id":"ed2b24f51bdbafd7131f705fcb8f099ac69900fb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"62d25eaa4381b14deed459e31f2762384eb56dc4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"cc7d4cb0_9ba7390b","updated":"2021-11-26 12:00:01.000000000","message":"recheck","commit_id":"ed2b24f51bdbafd7131f705fcb8f099ac69900fb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"cb223a6fbda562c7fb7daba8f3b4e7bdfce72ada","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"145cbd3d_f5d80f85","updated":"2021-12-15 05:56:24.000000000","message":"Thanks for the effort.\nPlease add few more test cases to validate the common use cases.","commit_id":"71e61c6026cacbaf8ea4c57f85539c6bc9978cb8"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"7bc438e4a6b23a0a2e4236142c109037740b0b5e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"125497b3_5ad2216c","in_reply_to":"145cbd3d_f5d80f85","updated":"2021-12-23 09:12:32.000000000","message":"Done","commit_id":"71e61c6026cacbaf8ea4c57f85539c6bc9978cb8"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"d9b4487f5d4592a7d0509a8303db73d16db28d0e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"88303e28_65669d68","updated":"2021-12-24 06:27:06.000000000","message":"recheck","commit_id":"6cf87dc4944cccd3f41a18fe68cf07209e167dc4"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"367276596e2b4bd45589542abb2a8d246c9d7910","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"00ccebcb_41487504","updated":"2022-01-21 05:39:58.000000000","message":"LGTM","commit_id":"7f4bfb2d652ecba5e61d6403d3eb0eb4933df50d"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"5fff12f99e79ddb6bb2ef1217178278e0fa636be","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"3e38c47a_6c746602","updated":"2022-01-21 05:41:36.000000000","message":"Probably we need to rebase and merge once the below patch lands. \nhttps://review.opendev.org/c/openstack/tripleo-heat-templates/+/824402 ","commit_id":"7f4bfb2d652ecba5e61d6403d3eb0eb4933df50d"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"980631c4f0e57f527ea9bd45c52d2514d897871f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"d25017d7_a4b9a10f","in_reply_to":"3e38c47a_6c746602","updated":"2022-01-24 10:13:50.000000000","message":"Above patch 824402 is merged","commit_id":"7f4bfb2d652ecba5e61d6403d3eb0eb4933df50d"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"2a00251bbf9d424dbdbaa7bff3600828dc584629","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"3c66c41d_95a23ad4","updated":"2022-01-24 13:35:41.000000000","message":"Thanks for the patch. LGTM.","commit_id":"dde9a258d85964d781962d556bc3221d925fa984"}],"deployment/neutron/derive_pci_passthrough_whitelist.py":[{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":45,"context_line":"    if func:"},{"line_number":46,"context_line":"        func \u003d func.strip()"},{"line_number":47,"context_line":"        \u0027\u0027\u0027self._set_pci_dev_info(\u0027func\u0027, MAX_FUNC, \u0027%01x\u0027)\u0027\u0027\u0027"},{"line_number":48,"context_line":"        pci_dict[\u0027function\u0027] \u003d func"},{"line_number":49,"context_line":"    if dbs:"},{"line_number":50,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"60f99f57_417f622c","line":47,"updated":"2021-07-06 05:02:34.000000000","message":"Can be removed","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":45,"context_line":"    if func:"},{"line_number":46,"context_line":"        func \u003d func.strip()"},{"line_number":47,"context_line":"        \u0027\u0027\u0027self._set_pci_dev_info(\u0027func\u0027, MAX_FUNC, \u0027%01x\u0027)\u0027\u0027\u0027"},{"line_number":48,"context_line":"        pci_dict[\u0027function\u0027] \u003d func"},{"line_number":49,"context_line":"    if dbs:"},{"line_number":50,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":3,"id":"431d6a09_b0dc37d0","line":47,"in_reply_to":"60f99f57_417f622c","updated":"2021-07-15 11:44:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":50,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"},{"line_number":51,"context_line":"        if len(dbs_fields) \u003e 3:"},{"line_number":52,"context_line":"            raise ValueError(\u0027Invalid PCI address specififed {!r}\u0027.format(pci_addr))"},{"line_number":53,"context_line":"            # If we got a partial address like \":00.\", we need to turn this"},{"line_number":54,"context_line":"            # into a domain of ANY, a bus of ANY, and a slot of 00. This code"},{"line_number":55,"context_line":"            # allows the address bus and/or domain to be left off"},{"line_number":56,"context_line":"        dbs_all \u003d [ANY] * (3 - len(dbs_fields))"}],"source_content_type":"text/x-python","patch_set":3,"id":"51cc5e0f_83d674bf","line":53,"updated":"2021-07-06 05:02:34.000000000","message":"Fix the comments alignment to match below code as it is related to the code and not the ValueError.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"},{"line_number":51,"context_line":"        if len(dbs_fields) \u003e 3:"},{"line_number":52,"context_line":"            raise ValueError(\u0027Invalid PCI address specififed {!r}\u0027.format(pci_addr))"},{"line_number":53,"context_line":"            # If we got a partial address like \":00.\", we need to turn this"},{"line_number":54,"context_line":"            # into a domain of ANY, a bus of ANY, and a slot of 00. This code"},{"line_number":55,"context_line":"            # allows the address bus and/or domain to be left off"},{"line_number":56,"context_line":"        dbs_all \u003d [ANY] * (3 - len(dbs_fields))"}],"source_content_type":"text/x-python","patch_set":3,"id":"8db873a3_5cf5da27","line":53,"in_reply_to":"51cc5e0f_83d674bf","updated":"2021-07-15 11:44:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"95bf6ff6529dd2c97750019807002f535e14cbcf","unresolved":true,"context_lines":[{"line_number":55,"context_line":"            # allows the address bus and/or domain to be left off"},{"line_number":56,"context_line":"        dbs_all \u003d [ANY] * (3 - len(dbs_fields))"},{"line_number":57,"context_line":"        dbs_all.extend(dbs_fields)"},{"line_number":58,"context_line":"        dbs_checked \u003d [s.strip() or ANY for s in dbs_all]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        \u0027\u0027\u0027 domain, bus, slot \u003d dbs_checked \u0027\u0027\u0027"},{"line_number":61,"context_line":"        pci_dict[\u0027domain\u0027], pci_dict[\u0027bus\u0027], pci_dict[\u0027slot\u0027] \u003d dbs_checked"}],"source_content_type":"text/x-python","patch_set":3,"id":"eeed2a99_c67b8105","line":58,"updated":"2021-07-06 12:01:16.000000000","message":"nit: only s.trip() needed here and (pr ANY) is not required since already added in dps_all.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"5f48c811c4ef07bb104a0f95239333c90574ac8b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            # allows the address bus and/or domain to be left off"},{"line_number":56,"context_line":"        dbs_all \u003d [ANY] * (3 - len(dbs_fields))"},{"line_number":57,"context_line":"        dbs_all.extend(dbs_fields)"},{"line_number":58,"context_line":"        dbs_checked \u003d [s.strip() or ANY for s in dbs_all]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        \u0027\u0027\u0027 domain, bus, slot \u003d dbs_checked \u0027\u0027\u0027"},{"line_number":61,"context_line":"        pci_dict[\u0027domain\u0027], pci_dict[\u0027bus\u0027], pci_dict[\u0027slot\u0027] \u003d dbs_checked"}],"source_content_type":"text/x-python","patch_set":3,"id":"50e7ed39_8a9dd73f","line":58,"in_reply_to":"bbde8ccd_66f97283","updated":"2021-08-11 08:29:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"f19c68e23cc75bc053e380c3146e398f6b49389b","unresolved":true,"context_lines":[{"line_number":55,"context_line":"            # allows the address bus and/or domain to be left off"},{"line_number":56,"context_line":"        dbs_all \u003d [ANY] * (3 - len(dbs_fields))"},{"line_number":57,"context_line":"        dbs_all.extend(dbs_fields)"},{"line_number":58,"context_line":"        dbs_checked \u003d [s.strip() or ANY for s in dbs_all]"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        \u0027\u0027\u0027 domain, bus, slot \u003d dbs_checked \u0027\u0027\u0027"},{"line_number":61,"context_line":"        pci_dict[\u0027domain\u0027], pci_dict[\u0027bus\u0027], pci_dict[\u0027slot\u0027] \u003d dbs_checked"}],"source_content_type":"text/x-python","patch_set":3,"id":"bbde8ccd_66f97283","line":58,"in_reply_to":"eeed2a99_c67b8105","updated":"2021-07-06 12:03:05.000000000","message":"typo s.strip() and or ANY","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def is_valid_pci_addr(user_config) -\u003e bool:"},{"line_number":66,"context_line":"    addr_dict \u003d {}"},{"line_number":67,"context_line":"    \"\"\" Is Check for wildcard in addr needed ? \"\"\""},{"line_number":68,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":69,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"},{"line_number":70,"context_line":"            addr_dict \u003d user_config[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"93afe021_26e41843","line":67,"updated":"2021-07-06 05:02:34.000000000","message":"yes, it is not required for derive. it will by nova. This module only checks if the give pci is used by the host, if it device not found or invalid pci address, should be treated as not used by host and it should returned as non-nic part entry.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"5f48c811c4ef07bb104a0f95239333c90574ac8b","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def is_valid_pci_addr(user_config) -\u003e bool:"},{"line_number":66,"context_line":"    addr_dict \u003d {}"},{"line_number":67,"context_line":"    \"\"\" Is Check for wildcard in addr needed ? \"\"\""},{"line_number":68,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":69,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"},{"line_number":70,"context_line":"            addr_dict \u003d user_config[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"a9a69137_5af15e8f","line":67,"in_reply_to":"93afe021_26e41843","updated":"2021-08-11 08:29:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        return False"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def is_single_pci_address(user_config) -\u003e bool:"},{"line_number":84,"context_line":"    addr_dict \u003d {}"},{"line_number":85,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":86,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"73646744_52b65a60","line":83,"updated":"2021-07-06 05:02:34.000000000","message":"Is this function check whether wild card is present in the pci address (str format or dict format)? If yes, it can be re-written to check for *. Is there any other posibility other than * wildcard to have more than one pci?","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":true,"context_lines":[{"line_number":80,"context_line":"        return False"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def is_single_pci_address(user_config) -\u003e bool:"},{"line_number":84,"context_line":"    addr_dict \u003d {}"},{"line_number":85,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":86,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ab66babd_001419ce","line":83,"in_reply_to":"73646744_52b65a60","updated":"2021-07-15 11:44:51.000000000","message":"Yes, metacharacter regex pattern containing charset are valid eg. \n{\"address\": {\"domain\": \".*\",  \"bus\": \"02\", \"slot\": \"01\", \"function\": \"[0-2]\"}","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"5f48c811c4ef07bb104a0f95239333c90574ac8b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        return False"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def is_single_pci_address(user_config) -\u003e bool:"},{"line_number":84,"context_line":"    addr_dict \u003d {}"},{"line_number":85,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":86,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"}],"source_content_type":"text/x-python","patch_set":3,"id":"479dcab1_e32b4beb","line":83,"in_reply_to":"ab66babd_001419ce","updated":"2021-08-11 08:29:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":122,"context_line":"    return False, None"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def get_function_by_ifname(ifname: str):"},{"line_number":126,"context_line":"    \"\"\"Given the device name, returns the PCI address of a device"},{"line_number":127,"context_line":"    and returns True if the address is in a physical function."},{"line_number":128,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"2e48ae33_740c02a5","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":16},"updated":"2021-07-06 05:02:34.000000000","message":"The name function is confusion, can be removed to be specific","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    return False, None"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def get_function_by_ifname(ifname: str):"},{"line_number":126,"context_line":"    \"\"\"Given the device name, returns the PCI address of a device"},{"line_number":127,"context_line":"    and returns True if the address is in a physical function."},{"line_number":128,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"b7380746_dc4bf44f","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":16},"in_reply_to":"2e48ae33_740c02a5","updated":"2021-07-15 11:44:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def get_function_by_ifname(ifname: str):"},{"line_number":126,"context_line":"    \"\"\"Given the device name, returns the PCI address of a device"},{"line_number":127,"context_line":"    and returns True if the address is in a physical function."},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    dev_path \u003d \"/sys/class/net/%s/device\" % ifname"},{"line_number":130,"context_line":"    sriov_totalvfs \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"accbf542_24c0add5","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":61},"updated":"2021-07-06 05:02:34.000000000","message":"This return value is not used, it can be removed.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"5f48c811c4ef07bb104a0f95239333c90574ac8b","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def get_function_by_ifname(ifname: str):"},{"line_number":126,"context_line":"    \"\"\"Given the device name, returns the PCI address of a device"},{"line_number":127,"context_line":"    and returns True if the address is in a physical function."},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    dev_path \u003d \"/sys/class/net/%s/device\" % ifname"},{"line_number":130,"context_line":"    sriov_totalvfs \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"6c7951d0_c3e4356b","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":61},"in_reply_to":"4ac9db0b_1328cbb7","updated":"2021-08-11 08:29:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":true,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def get_function_by_ifname(ifname: str):"},{"line_number":126,"context_line":"    \"\"\"Given the device name, returns the PCI address of a device"},{"line_number":127,"context_line":"    and returns True if the address is in a physical function."},{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    dev_path \u003d \"/sys/class/net/%s/device\" % ifname"},{"line_number":130,"context_line":"    sriov_totalvfs \u003d 0"}],"source_content_type":"text/x-python","patch_set":3,"id":"4ac9db0b_1328cbb7","line":127,"range":{"start_line":127,"start_character":8,"end_line":127,"end_character":61},"in_reply_to":"accbf542_24c0add5","updated":"2021-07-15 11:44:51.000000000","message":"This is just comment (actual return statement is down)","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"95bf6ff6529dd2c97750019807002f535e14cbcf","unresolved":true,"context_lines":[{"line_number":283,"context_line":"        else:"},{"line_number":284,"context_line":"            addr_dict \u003d {}"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        user_address_pattern \u003d \"%s:%s:%s.%s\" % ("},{"line_number":287,"context_line":"           get_regex_pattern(addr_dict[\u0027domain\u0027], 4),"},{"line_number":288,"context_line":"           get_regex_pattern(addr_dict[\u0027bus\u0027], 2),"},{"line_number":289,"context_line":"           get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"e6032f8c_c57f15cc","line":286,"updated":"2021-07-06 12:01:16.000000000","message":"nit: we can have common function to format and can be invoked in multiple places.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        else:"},{"line_number":284,"context_line":"            addr_dict \u003d {}"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"        user_address_pattern \u003d \"%s:%s:%s.%s\" % ("},{"line_number":287,"context_line":"           get_regex_pattern(addr_dict[\u0027domain\u0027], 4),"},{"line_number":288,"context_line":"           get_regex_pattern(addr_dict[\u0027bus\u0027], 2),"},{"line_number":289,"context_line":"           get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"9773b463_c5305c91","line":286,"in_reply_to":"e6032f8c_c57f15cc","updated":"2021-07-15 11:44:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"95bf6ff6529dd2c97750019807002f535e14cbcf","unresolved":true,"context_lines":[{"line_number":289,"context_line":"           get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"},{"line_number":290,"context_line":"           addr_dict[\u0027function\u0027])"},{"line_number":291,"context_line":"    else:"},{"line_number":292,"context_line":"        user_address_pattern \u003d (\"[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:\""},{"line_number":293,"context_line":"                                \"[0-9a-fA-F]{2}.[0-7]\")"},{"line_number":294,"context_line":"    pci_addresses, dev_info \u003d get_pci_addresses_by_ifname(pf, allocated_pci)"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"17c1632a_0ecbfa7b","line":292,"updated":"2021-07-06 12:01:16.000000000","message":"can we move this initialization as common in main function or global variable, using in multiple functions?","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":false,"context_lines":[{"line_number":289,"context_line":"           get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"},{"line_number":290,"context_line":"           addr_dict[\u0027function\u0027])"},{"line_number":291,"context_line":"    else:"},{"line_number":292,"context_line":"        user_address_pattern \u003d (\"[0-9a-fA-F]{4}:[0-9a-fA-F]{2}:\""},{"line_number":293,"context_line":"                                \"[0-9a-fA-F]{2}.[0-7]\")"},{"line_number":294,"context_line":"    pci_addresses, dev_info \u003d get_pci_addresses_by_ifname(pf, allocated_pci)"},{"line_number":295,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"06758958_9c3a6217","line":292,"in_reply_to":"17c1632a_0ecbfa7b","updated":"2021-07-15 11:44:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"525737ebfea47d2ac122f55bdcfad9fe249a7812","unresolved":true,"context_lines":[{"line_number":326,"context_line":"    if isinstance(user_config[\u0027address\u0027], dict):"},{"line_number":327,"context_line":"        addr_dict \u003d user_config[\u0027address\u0027]"},{"line_number":328,"context_line":"    elif isinstance(user_config[\u0027address\u0027], str):"},{"line_number":329,"context_line":"        addr_dict \u003d get_pciaddr_dict_from_usraddr(user_config[\u0027address\u0027])"},{"line_number":330,"context_line":"    else:"},{"line_number":331,"context_line":"        return None"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d6aeba9e_4ad40437","line":329,"updated":"2021-07-06 08:13:59.000000000","message":"It would be easier to use string format rather than converting dict to string. Anyways the regex is string based.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":326,"context_line":"    if isinstance(user_config[\u0027address\u0027], dict):"},{"line_number":327,"context_line":"        addr_dict \u003d user_config[\u0027address\u0027]"},{"line_number":328,"context_line":"    elif isinstance(user_config[\u0027address\u0027], str):"},{"line_number":329,"context_line":"        addr_dict \u003d get_pciaddr_dict_from_usraddr(user_config[\u0027address\u0027])"},{"line_number":330,"context_line":"    else:"},{"line_number":331,"context_line":"        return None"},{"line_number":332,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"26c8559e_733dfd11","line":329,"in_reply_to":"d6aeba9e_4ad40437","updated":"2021-12-01 08:18:08.000000000","message":"User can specify PCI addr in both DICT and STR format","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"525737ebfea47d2ac122f55bdcfad9fe249a7812","unresolved":true,"context_lines":[{"line_number":353,"context_line":"                get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"},{"line_number":354,"context_line":"                addr_dict[\u0027function\u0027])"},{"line_number":355,"context_line":"    else:"},{"line_number":356,"context_line":"        user_address_pattern \u003d \"%s:%s:%s.%s\" % ("},{"line_number":357,"context_line":"            get_regex_pattern(addr_dict[\u0027domain\u0027], 4),"},{"line_number":358,"context_line":"            get_regex_pattern(addr_dict[\u0027bus\u0027], 2),"},{"line_number":359,"context_line":"            get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"85b6f211_1116a47f","line":356,"updated":"2021-07-06 08:13:59.000000000","message":"Since regex is being used in both cases, IMHO its not required to identify if the PCI address has wild card or not","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"95bf6ff6529dd2c97750019807002f535e14cbcf","unresolved":true,"context_lines":[{"line_number":353,"context_line":"                get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"},{"line_number":354,"context_line":"                addr_dict[\u0027function\u0027])"},{"line_number":355,"context_line":"    else:"},{"line_number":356,"context_line":"        user_address_pattern \u003d \"%s:%s:%s.%s\" % ("},{"line_number":357,"context_line":"            get_regex_pattern(addr_dict[\u0027domain\u0027], 4),"},{"line_number":358,"context_line":"            get_regex_pattern(addr_dict[\u0027bus\u0027], 2),"},{"line_number":359,"context_line":"            get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"bca609e7_97d34517","line":356,"updated":"2021-07-06 12:01:16.000000000","message":"line 350 to 354 same code is duplicated here, can we make else if condition \u0027not is_single_addr or (is_single_addr and not ispf)?","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"},{"line_number":354,"context_line":"                addr_dict[\u0027function\u0027])"},{"line_number":355,"context_line":"    else:"},{"line_number":356,"context_line":"        user_address_pattern \u003d \"%s:%s:%s.%s\" % ("},{"line_number":357,"context_line":"            get_regex_pattern(addr_dict[\u0027domain\u0027], 4),"},{"line_number":358,"context_line":"            get_regex_pattern(addr_dict[\u0027bus\u0027], 2),"},{"line_number":359,"context_line":"            get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"4727d18f_de6b9d1d","line":356,"in_reply_to":"85b6f211_1116a47f","updated":"2021-12-01 08:18:08.000000000","message":"The latest update takes care of this","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":false,"context_lines":[{"line_number":353,"context_line":"                get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"},{"line_number":354,"context_line":"                addr_dict[\u0027function\u0027])"},{"line_number":355,"context_line":"    else:"},{"line_number":356,"context_line":"        user_address_pattern \u003d \"%s:%s:%s.%s\" % ("},{"line_number":357,"context_line":"            get_regex_pattern(addr_dict[\u0027domain\u0027], 4),"},{"line_number":358,"context_line":"            get_regex_pattern(addr_dict[\u0027bus\u0027], 2),"},{"line_number":359,"context_line":"            get_regex_pattern(addr_dict[\u0027slot\u0027], 2),"}],"source_content_type":"text/x-python","patch_set":3,"id":"c70395e1_80466398","line":356,"in_reply_to":"bca609e7_97d34517","updated":"2021-07-15 11:44:51.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    if not single_addr:"},{"line_number":398,"context_line":"        for pf in non_nic_partition_pfs:"},{"line_number":399,"context_line":"            ispf, user_pf \u003d is_physical_function(pf)"},{"line_number":400,"context_line":"            passthrough_tmp \u003d get_passthrough_config_pciformat("},{"line_number":401,"context_line":"                user_config, pf, allocated_pci, single_addr, True)"},{"line_number":402,"context_line":"            non_nic_part_config.extend(passthrough_tmp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"039c9902_ca265302","line":399,"updated":"2021-07-06 05:02:34.000000000","message":"These results are not used in this function, thid linr can be removed.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":396,"context_line":""},{"line_number":397,"context_line":"    if not single_addr:"},{"line_number":398,"context_line":"        for pf in non_nic_partition_pfs:"},{"line_number":399,"context_line":"            ispf, user_pf \u003d is_physical_function(pf)"},{"line_number":400,"context_line":"            passthrough_tmp \u003d get_passthrough_config_pciformat("},{"line_number":401,"context_line":"                user_config, pf, allocated_pci, single_addr, True)"},{"line_number":402,"context_line":"            non_nic_part_config.extend(passthrough_tmp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bb7011fc_dc9b22ea","line":399,"in_reply_to":"039c9902_ca265302","updated":"2021-12-01 08:18:08.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"525737ebfea47d2ac122f55bdcfad9fe249a7812","unresolved":true,"context_lines":[{"line_number":472,"context_line":"        if \u0027address\u0027 in user_config:"},{"line_number":473,"context_line":"            if is_single_pci_address(user_config):"},{"line_number":474,"context_line":"                ispf, user_pf \u003d is_physical_function(user_config[\u0027address\u0027])"},{"line_number":475,"context_line":"                if user_pf in nic_partition_pfs:"},{"line_number":476,"context_line":"                    passthrough_tmp \u003d get_passthrough_config_by_address("},{"line_number":477,"context_line":"                        user_config, system_configs, allocated_pci, True)"},{"line_number":478,"context_line":"                    nic_part_config.extend(passthrough_tmp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"4be87eae_138ad8fd","line":475,"updated":"2021-07-06 08:13:59.000000000","message":"user_pf is boolean here. It wouldn\u0027t be appropriate here.","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        if \u0027address\u0027 in user_config:"},{"line_number":473,"context_line":"            if is_single_pci_address(user_config):"},{"line_number":474,"context_line":"                ispf, user_pf \u003d is_physical_function(user_config[\u0027address\u0027])"},{"line_number":475,"context_line":"                if user_pf in nic_partition_pfs:"},{"line_number":476,"context_line":"                    passthrough_tmp \u003d get_passthrough_config_by_address("},{"line_number":477,"context_line":"                        user_config, system_configs, allocated_pci, True)"},{"line_number":478,"context_line":"                    nic_part_config.extend(passthrough_tmp)"}],"source_content_type":"text/x-python","patch_set":3,"id":"8c52f14e_69268e7a","line":475,"in_reply_to":"4be87eae_138ad8fd","updated":"2021-12-01 08:18:08.000000000","message":"This code is updated and not present in latest patch","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"416bddfa458282d7673915f5ed2286e325cef76a","unresolved":true,"context_lines":[{"line_number":516,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":517,"context_line":"        user_configs, system_configs)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    if len(nic_part + non_nic_part) \u003e 0:"},{"line_number":520,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":521,"context_line":"                                                       nic_part)"},{"line_number":522,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"aeb0ff9a_c5eed7a3","line":519,"updated":"2021-07-06 05:02:34.000000000","message":"The intention here is to write the file only when nic_part is used and affecting the pci whitelist. Why is non_nic_part entries is also added to the check?","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":516,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":517,"context_line":"        user_configs, system_configs)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    if len(nic_part + non_nic_part) \u003e 0:"},{"line_number":520,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":521,"context_line":"                                                       nic_part)"},{"line_number":522,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"c1a7202f_d700d49b","line":519,"in_reply_to":"0a244ad1_080ae152","updated":"2021-12-01 08:18:08.000000000","message":"Done","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"60671aee5d7b59ca3c9cee47fe1eb25fe2a28c91","unresolved":true,"context_lines":[{"line_number":516,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":517,"context_line":"        user_configs, system_configs)"},{"line_number":518,"context_line":""},{"line_number":519,"context_line":"    if len(nic_part + non_nic_part) \u003e 0:"},{"line_number":520,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":521,"context_line":"                                                       nic_part)"},{"line_number":522,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"0a244ad1_080ae152","line":519,"in_reply_to":"aeb0ff9a_c5eed7a3","updated":"2021-07-15 11:44:51.000000000","message":"This is needed as user specified regex patterns, eg. \"00:*:*.3\" - might result in a valid non_nic_part pci addr of something like [\u00270000\u0027, \u002718\u0027, \u002700\u0027, \u00273\u0027]","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def get_pciaddr_dict_from_usraddr(pci_addr: str):"},{"line_number":43,"context_line":"    pci_dict \u003d {}"},{"line_number":44,"context_line":"    dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":45,"context_line":"    pci_dict[\u0027function\u0027] \u003d ANY"},{"line_number":46,"context_line":"    if func:"}],"source_content_type":"text/x-python","patch_set":5,"id":"0bfd7cb8_6bdc633e","line":43,"updated":"2021-07-22 15:59:30.000000000","message":"nit: Missing comments here about function description.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"def get_pciaddr_dict_from_usraddr(pci_addr: str):"},{"line_number":43,"context_line":"    pci_dict \u003d {}"},{"line_number":44,"context_line":"    dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":45,"context_line":"    pci_dict[\u0027function\u0027] \u003d ANY"},{"line_number":46,"context_line":"    if func:"}],"source_content_type":"text/x-python","patch_set":5,"id":"e078a6c7_0b29ef43","line":43,"in_reply_to":"0bfd7cb8_6bdc633e","updated":"2021-12-01 08:18:08.000000000","message":"Function name is self-explanatory","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":44,"context_line":"    dbs, sep, func \u003d pci_addr.partition(\u0027.\u0027)"},{"line_number":45,"context_line":"    pci_dict[\u0027function\u0027] \u003d ANY"},{"line_number":46,"context_line":"    if func:"},{"line_number":47,"context_line":"        func \u003d func.strip()"},{"line_number":48,"context_line":"        pci_dict[\u0027function\u0027] \u003d func"},{"line_number":49,"context_line":"    if dbs:"},{"line_number":50,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":5,"id":"c1dac1a6_dcca65e0","line":47,"updated":"2021-07-22 15:59:30.000000000","message":"nit: Moving func.strip() to directly next line will reduce one assignment statement. and also not used \u0027func\u0027 variable in this function any other lines.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def is_valid_pci_addr(user_config) -\u003e bool:"},{"line_number":66,"context_line":"    addr_dict \u003d {}"},{"line_number":67,"context_line":"    \"\"\" Is Check for wildcard in addr needed ? \"\"\""},{"line_number":68,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":69,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"}],"source_content_type":"text/x-python","patch_set":5,"id":"f8e86dce_9590c5c1","line":66,"updated":"2021-07-22 15:59:30.000000000","message":"Missing comments here","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"def is_valid_pci_addr(user_config) -\u003e bool:"},{"line_number":66,"context_line":"    addr_dict \u003d {}"},{"line_number":67,"context_line":"    \"\"\" Is Check for wildcard in addr needed ? \"\"\""},{"line_number":68,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":69,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"}],"source_content_type":"text/x-python","patch_set":5,"id":"c457999e_1fcc5073","line":66,"in_reply_to":"f8e86dce_9590c5c1","updated":"2021-12-01 08:18:08.000000000","message":"Small validation utility - function name is self explanatory","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":71,"context_line":"        elif isinstance(user_config[\u0027address\u0027], str):"},{"line_number":72,"context_line":"            addr_dict \u003d get_pciaddr_dict_from_usraddr(user_config[\u0027address\u0027])"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    if ((int(addr_dict[\u0027function\u0027]) \u003c\u003d MAX_FUNC) and"},{"line_number":75,"context_line":"          (int(addr_dict[\u0027domain\u0027]) \u003c\u003d MAX_DOMAIN) and"},{"line_number":76,"context_line":"          (int(addr_dict[\u0027bus\u0027]) \u003c\u003d MAX_BUS) and"},{"line_number":77,"context_line":"          (int(addr_dict[\u0027slot\u0027]) \u003c\u003d MAX_SLOT)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1ead0f4b_ae5c9507","line":74,"updated":"2021-07-22 15:59:30.000000000","message":"Nit: Exception may be raised for invalid value or when key is missing in dictionary. need to handle exception here. or raise exception similar like line 91 when missing keys in dict.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"61dc3916d916c1b23bc2e5fde3152d612598daf5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        elif isinstance(user_config[\u0027address\u0027], str):"},{"line_number":72,"context_line":"            addr_dict \u003d get_pciaddr_dict_from_usraddr(user_config[\u0027address\u0027])"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    if ((int(addr_dict[\u0027function\u0027]) \u003c\u003d MAX_FUNC) and"},{"line_number":75,"context_line":"          (int(addr_dict[\u0027domain\u0027]) \u003c\u003d MAX_DOMAIN) and"},{"line_number":76,"context_line":"          (int(addr_dict[\u0027bus\u0027]) \u003c\u003d MAX_BUS) and"},{"line_number":77,"context_line":"          (int(addr_dict[\u0027slot\u0027]) \u003c\u003d MAX_SLOT)):"}],"source_content_type":"text/x-python","patch_set":5,"id":"ca8b0903_c38c2eb3","line":74,"in_reply_to":"1ead0f4b_ae5c9507","updated":"2021-12-23 09:16:40.000000000","message":"It\u0027s possible to miss bus/slot keys while user specifies the PCI addr","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def is_single_pci_address(user_config) -\u003e bool:"},{"line_number":84,"context_line":"    addr_dict \u003d {}"},{"line_number":85,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":86,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"},{"line_number":87,"context_line":"            addr_dict \u003d user_config[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"7900f687_3bca6bbe","line":84,"updated":"2021-07-22 15:59:30.000000000","message":"Missing comments here","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0815ce7c173392a97920c9a92d564c090631ebc3","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def is_single_pci_address(user_config) -\u003e bool:"},{"line_number":84,"context_line":"    addr_dict \u003d {}"},{"line_number":85,"context_line":"    if \u0027address\u0027 in user_config:"},{"line_number":86,"context_line":"        if isinstance(user_config[\u0027address\u0027], dict):"},{"line_number":87,"context_line":"            addr_dict \u003d user_config[\u0027address\u0027]"}],"source_content_type":"text/x-python","patch_set":5,"id":"2b55fbcf_4acb4ad0","line":84,"in_reply_to":"7900f687_3bca6bbe","updated":"2021-12-03 05:58:56.000000000","message":"Function name is self explanatory","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    else:"},{"line_number":93,"context_line":"        return False"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if all(c in string.hexdigits for c in addr_dict[\u0027domain\u0027]):"},{"line_number":96,"context_line":"        if all(c in string.hexdigits for c in addr_dict[\u0027bus\u0027]):"},{"line_number":97,"context_line":"            if all(c in string.hexdigits for c in addr_dict[\u0027slot\u0027]):"},{"line_number":98,"context_line":"                if all(c in string.hexdigits for c in addr_dict[\u0027function\u0027]):"}],"source_content_type":"text/x-python","patch_set":5,"id":"e0db05b0_bcd61b6e","line":95,"updated":"2021-07-22 15:59:30.000000000","message":"nit: can we combine all the conditions using \u0027and\u0027?","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"61dc3916d916c1b23bc2e5fde3152d612598daf5","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    else:"},{"line_number":93,"context_line":"        return False"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    if all(c in string.hexdigits for c in addr_dict[\u0027domain\u0027]):"},{"line_number":96,"context_line":"        if all(c in string.hexdigits for c in addr_dict[\u0027bus\u0027]):"},{"line_number":97,"context_line":"            if all(c in string.hexdigits for c in addr_dict[\u0027slot\u0027]):"},{"line_number":98,"context_line":"                if all(c in string.hexdigits for c in addr_dict[\u0027function\u0027]):"}],"source_content_type":"text/x-python","patch_set":5,"id":"42c51369_2cc2becc","line":95,"in_reply_to":"e0db05b0_bcd61b6e","updated":"2021-12-23 09:16:40.000000000","message":"Leaving for code readability","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def is_physical_function(pci_addr):"},{"line_number":104,"context_line":"    if isinstance(pci_addr, dict):"},{"line_number":105,"context_line":"        pci_addr_str \u003d \"%s:%s:%s.%s\" % (pci_addr[\u0027domain\u0027],"},{"line_number":106,"context_line":"              pci_addr[\u0027bus\u0027], pci_addr[\u0027slot\u0027], pci_addr[\u0027function\u0027])"},{"line_number":107,"context_line":"    elif isinstance(pci_addr, str):"}],"source_content_type":"text/x-python","patch_set":5,"id":"e8516194_0a31337a","line":104,"updated":"2021-07-22 15:59:30.000000000","message":"missing comments","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"61dc3916d916c1b23bc2e5fde3152d612598daf5","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"def is_physical_function(pci_addr):"},{"line_number":104,"context_line":"    if isinstance(pci_addr, dict):"},{"line_number":105,"context_line":"        pci_addr_str \u003d \"%s:%s:%s.%s\" % (pci_addr[\u0027domain\u0027],"},{"line_number":106,"context_line":"              pci_addr[\u0027bus\u0027], pci_addr[\u0027slot\u0027], pci_addr[\u0027function\u0027])"},{"line_number":107,"context_line":"    elif isinstance(pci_addr, str):"}],"source_content_type":"text/x-python","patch_set":5,"id":"4cace1c0_018ff3b2","line":104,"in_reply_to":"e8516194_0a31337a","updated":"2021-12-23 09:16:40.000000000","message":"Function name is self-explanatory","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"f8b7e373a7d4e2847c8bc50ce8e381d53dbfbeb6","unresolved":true,"context_lines":[{"line_number":109,"context_line":"    else:"},{"line_number":110,"context_line":"        return False, None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    dev_path \u003d \"/sys/bus/pci/devices/%s/\" % pci_addr_str"},{"line_number":113,"context_line":"    if os.path.isdir(dev_path):"},{"line_number":114,"context_line":"        dev_info \u003d os.listdir(dev_path + \u0027net/\u0027)"},{"line_number":115,"context_line":"        try:"},{"line_number":116,"context_line":"            with open(dev_path + _SRIOV_TOTALVFS) as fd:"},{"line_number":117,"context_line":"                sriov_totalvfs \u003d int(fd.read())"},{"line_number":118,"context_line":"                return (sriov_totalvfs \u003e 0), dev_info.pop()"},{"line_number":119,"context_line":"        except (IOError, ValueError):"},{"line_number":120,"context_line":"            return False, None"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    return False, None"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"47fb5700_642ddca9","line":120,"range":{"start_line":112,"start_character":3,"end_line":120,"end_character":30},"updated":"2021-07-22 07:58:55.000000000","message":"This code has similarities with below function (get_addr_from_ifname), can be unified.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"5f48c811c4ef07bb104a0f95239333c90574ac8b","unresolved":true,"context_lines":[{"line_number":109,"context_line":"    else:"},{"line_number":110,"context_line":"        return False, None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    dev_path \u003d \"/sys/bus/pci/devices/%s/\" % pci_addr_str"},{"line_number":113,"context_line":"    if os.path.isdir(dev_path):"},{"line_number":114,"context_line":"        dev_info \u003d os.listdir(dev_path + \u0027net/\u0027)"},{"line_number":115,"context_line":"        try:"},{"line_number":116,"context_line":"            with open(dev_path + _SRIOV_TOTALVFS) as fd:"},{"line_number":117,"context_line":"                sriov_totalvfs \u003d int(fd.read())"},{"line_number":118,"context_line":"                return (sriov_totalvfs \u003e 0), dev_info.pop()"},{"line_number":119,"context_line":"        except (IOError, ValueError):"},{"line_number":120,"context_line":"            return False, None"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    return False, None"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"a0145ec2_9e6a9733","line":120,"range":{"start_line":112,"start_character":3,"end_line":120,"end_character":30},"in_reply_to":"47fb5700_642ddca9","updated":"2021-08-11 08:29:51.000000000","message":"This API i/p is PCI addr and checks if the addr is PF/VF\nBut, get_addr_from_ifname takes devanme as i/p and return PCI addr and devinfo","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"b23fedb03ed59bea746136bd45a634002c4f5de4","unresolved":false,"context_lines":[{"line_number":109,"context_line":"    else:"},{"line_number":110,"context_line":"        return False, None"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    dev_path \u003d \"/sys/bus/pci/devices/%s/\" % pci_addr_str"},{"line_number":113,"context_line":"    if os.path.isdir(dev_path):"},{"line_number":114,"context_line":"        dev_info \u003d os.listdir(dev_path + \u0027net/\u0027)"},{"line_number":115,"context_line":"        try:"},{"line_number":116,"context_line":"            with open(dev_path + _SRIOV_TOTALVFS) as fd:"},{"line_number":117,"context_line":"                sriov_totalvfs \u003d int(fd.read())"},{"line_number":118,"context_line":"                return (sriov_totalvfs \u003e 0), dev_info.pop()"},{"line_number":119,"context_line":"        except (IOError, ValueError):"},{"line_number":120,"context_line":"            return False, None"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    return False, None"},{"line_number":123,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"a250ac79_2f0dbf3e","line":120,"range":{"start_line":112,"start_character":3,"end_line":120,"end_character":30},"in_reply_to":"a0145ec2_9e6a9733","updated":"2021-11-10 10:04:21.000000000","message":"Done","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":131,"context_line":"    if os.path.isdir(dev_path):"},{"line_number":132,"context_line":"        try:"},{"line_number":133,"context_line":"            # sriov_totalvfs contains the maximum possible VFs for this PF"},{"line_number":134,"context_line":"            with open(os.path.join(dev_path, _SRIOV_TOTALVFS)) as fd:"},{"line_number":135,"context_line":"                sriov_totalvfs \u003d int(fd.read())"},{"line_number":136,"context_line":"                return (os.readlink(dev_path).strip(\"./\"),"},{"line_number":137,"context_line":"                        sriov_totalvfs \u003e 0)"}],"source_content_type":"text/x-python","patch_set":5,"id":"faf79c9d_741cd0b3","line":134,"updated":"2021-07-22 15:59:30.000000000","message":"nit: file open and reading parts are common, we can extract as another function and reuse it.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3cdd6946281609b6b99d081bb680a00df40a46b8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    if os.path.isdir(dev_path):"},{"line_number":132,"context_line":"        try:"},{"line_number":133,"context_line":"            # sriov_totalvfs contains the maximum possible VFs for this PF"},{"line_number":134,"context_line":"            with open(os.path.join(dev_path, _SRIOV_TOTALVFS)) as fd:"},{"line_number":135,"context_line":"                sriov_totalvfs \u003d int(fd.read())"},{"line_number":136,"context_line":"                return (os.readlink(dev_path).strip(\"./\"),"},{"line_number":137,"context_line":"                        sriov_totalvfs \u003e 0)"}],"source_content_type":"text/x-python","patch_set":5,"id":"bfe34e11_127cbc72","line":134,"in_reply_to":"faf79c9d_741cd0b3","updated":"2021-12-03 05:53:42.000000000","message":"Ack","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"3b346dbc535c2ad0c5f5bfec8d41c49aa1e2306a","unresolved":true,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def get_sriov_configs():"},{"line_number":144,"context_line":"    configs \u003d []"},{"line_number":145,"context_line":"    try:"},{"line_number":146,"context_line":"        with open(\u0027/var/lib/os-net-config/sriov_config.yaml\u0027) as sriov_config:"},{"line_number":147,"context_line":"            configs \u003d yaml.safe_load(sriov_config)"}],"source_content_type":"text/x-python","patch_set":5,"id":"372dbced_2b31b663","line":144,"updated":"2021-07-22 15:59:30.000000000","message":"Missing comments here and also in other functions.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3cdd6946281609b6b99d081bb680a00df40a46b8","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"def get_sriov_configs():"},{"line_number":144,"context_line":"    configs \u003d []"},{"line_number":145,"context_line":"    try:"},{"line_number":146,"context_line":"        with open(\u0027/var/lib/os-net-config/sriov_config.yaml\u0027) as sriov_config:"},{"line_number":147,"context_line":"            configs \u003d yaml.safe_load(sriov_config)"}],"source_content_type":"text/x-python","patch_set":5,"id":"0a15bb17_9b080567","line":144,"in_reply_to":"372dbced_2b31b663","updated":"2021-12-03 05:53:42.000000000","message":"Function name is self-explanatory","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"f8b7e373a7d4e2847c8bc50ce8e381d53dbfbeb6","unresolved":true,"context_lines":[{"line_number":550,"context_line":"                non_nic_part_config.append(user_config)"},{"line_number":551,"context_line":"            else:"},{"line_number":552,"context_line":"                nic_part_config.extend(passthrough_tmp)"},{"line_number":553,"context_line":"        elif \u0027physical_network\u0027 in user_config:"},{"line_number":554,"context_line":"            pf \u003d get_pf_name_from_phy_network(user_config[\u0027physical_network\u0027])"},{"line_number":555,"context_line":"            if pf in nic_partition_pfs:"},{"line_number":556,"context_line":"                passthru_tmp \u003d get_passthrough_config("}],"source_content_type":"text/x-python","patch_set":5,"id":"b030baea_8a73144a","line":553,"updated":"2021-07-22 07:58:55.000000000","message":"What is the case for this section, is it a valid case not to have devname and address and vendor/product id  but only physical_network only?","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":550,"context_line":"                non_nic_part_config.append(user_config)"},{"line_number":551,"context_line":"            else:"},{"line_number":552,"context_line":"                nic_part_config.extend(passthrough_tmp)"},{"line_number":553,"context_line":"        elif \u0027physical_network\u0027 in user_config:"},{"line_number":554,"context_line":"            pf \u003d get_pf_name_from_phy_network(user_config[\u0027physical_network\u0027])"},{"line_number":555,"context_line":"            if pf in nic_partition_pfs:"},{"line_number":556,"context_line":"                passthru_tmp \u003d get_passthrough_config("}],"source_content_type":"text/x-python","patch_set":5,"id":"f77e573e_dd1628ca","line":553,"in_reply_to":"3e9c5053_14cbc51f","updated":"2021-12-01 08:18:08.000000000","message":"Done","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"5f48c811c4ef07bb104a0f95239333c90574ac8b","unresolved":true,"context_lines":[{"line_number":550,"context_line":"                non_nic_part_config.append(user_config)"},{"line_number":551,"context_line":"            else:"},{"line_number":552,"context_line":"                nic_part_config.extend(passthrough_tmp)"},{"line_number":553,"context_line":"        elif \u0027physical_network\u0027 in user_config:"},{"line_number":554,"context_line":"            pf \u003d get_pf_name_from_phy_network(user_config[\u0027physical_network\u0027])"},{"line_number":555,"context_line":"            if pf in nic_partition_pfs:"},{"line_number":556,"context_line":"                passthru_tmp \u003d get_passthrough_config("}],"source_content_type":"text/x-python","patch_set":5,"id":"3e9c5053_14cbc51f","line":553,"in_reply_to":"b030baea_8a73144a","updated":"2021-08-11 08:29:51.000000000","message":"No updates are done in this section - this user_config will work as existing","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"f8b7e373a7d4e2847c8bc50ce8e381d53dbfbeb6","unresolved":true,"context_lines":[{"line_number":572,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":573,"context_line":"        user_configs, system_configs)"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    if len(nic_part + non_nic_part) \u003e 0:"},{"line_number":576,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":577,"context_line":"                                                       nic_part)"},{"line_number":578,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"8ff54ef6_d4ac468d","line":575,"updated":"2021-07-22 07:58:55.000000000","message":"non_nic_part should not be added for this check as, if nic_part is empty, then we dont need to override this file at all.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[{"line_number":572,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":573,"context_line":"        user_configs, system_configs)"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    if len(nic_part + non_nic_part) \u003e 0:"},{"line_number":576,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":577,"context_line":"                                                       nic_part)"},{"line_number":578,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"0af4d7a9_c6422633","line":575,"in_reply_to":"8ff54ef6_d4ac468d","updated":"2021-12-01 08:18:08.000000000","message":"Done","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"f8b7e373a7d4e2847c8bc50ce8e381d53dbfbeb6","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":5,"id":"478e397c_b3c560dc","line":581,"updated":"2021-07-22 07:58:55.000000000","message":"As a general case, as we discussed, if a nic (user config) is not used in the nic partition, the user config should be written as it is (be it devname or regex). It should not be decoded as it it not required at all. Please create a test case for this case.","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0a89ad8a450a75314fba5fcfc4e71d539eab5a52","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bd616ac2_011e6038","line":581,"in_reply_to":"478e397c_b3c560dc","updated":"2021-12-01 08:18:08.000000000","message":"Done","commit_id":"a75a2feea47eb64381dd3b04766db93efec15a67"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"cb223a6fbda562c7fb7daba8f3b4e7bdfce72ada","unresolved":true,"context_lines":[{"line_number":406,"context_line":"    non_nic_part_config \u003d []"},{"line_number":407,"context_line":"    nic_partition_pfs \u003d get_sriov_nic_partition_pfs(system_configs)"},{"line_number":408,"context_line":"    non_nic_partition_pfs \u003d get_sriov_non_nic_partition_pfs(system_configs)"},{"line_number":409,"context_line":"    single_addr \u003d is_single_pci_address(user_config)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    for pf in nic_partition_pfs:"},{"line_number":412,"context_line":"        passthrough_tmp \u003d get_passthrough_config_pciformat("}],"source_content_type":"text/x-python","patch_set":10,"id":"187e0bf8_b818dafd","line":409,"updated":"2021-12-15 05:56:24.000000000","message":"Isn\u0027t it possible to do without identifying if the PCI address is unique or regex based?","commit_id":"71e61c6026cacbaf8ea4c57f85539c6bc9978cb8"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"7bc438e4a6b23a0a2e4236142c109037740b0b5e","unresolved":true,"context_lines":[{"line_number":406,"context_line":"    non_nic_part_config \u003d []"},{"line_number":407,"context_line":"    nic_partition_pfs \u003d get_sriov_nic_partition_pfs(system_configs)"},{"line_number":408,"context_line":"    non_nic_partition_pfs \u003d get_sriov_non_nic_partition_pfs(system_configs)"},{"line_number":409,"context_line":"    single_addr \u003d is_single_pci_address(user_config)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    for pf in nic_partition_pfs:"},{"line_number":412,"context_line":"        passthrough_tmp \u003d get_passthrough_config_pciformat("}],"source_content_type":"text/x-python","patch_set":10,"id":"e55eae5b_0e2e5177","line":409,"in_reply_to":"187e0bf8_b818dafd","updated":"2021-12-23 09:12:32.000000000","message":"This helps in framing the regex pattern","commit_id":"71e61c6026cacbaf8ea4c57f85539c6bc9978cb8"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"42291035c77b438ec4d9d30f85b71996f08e25f9","unresolved":true,"context_lines":[{"line_number":28,"context_line":"_SYS_CLASS_NET_PATH \u003d \u0027/sys/class/net\u0027"},{"line_number":29,"context_line":"_DERIVED_PCI_WHITELIST_FILE \u003d \u0027/etc/puppet/hieradata/pci_passthrough_whitelist.json\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"MAX_VENDOR_ID \u003d 0xFFFF"},{"line_number":32,"context_line":"MAX_PRODUCT_ID \u003d 0xFFFF"},{"line_number":33,"context_line":"MAX_FUNC \u003d 0x7"},{"line_number":34,"context_line":"MAX_DOMAIN \u003d 0xFFFF"}],"source_content_type":"text/x-python","patch_set":12,"id":"ac1df3d8_e341ef9d","line":31,"updated":"2022-01-17 08:21:27.000000000","message":"Unused and shall be removed","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3c2d2d72ddf4a9cc264dada35c3ee2f0fc75e25e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"_SYS_CLASS_NET_PATH \u003d \u0027/sys/class/net\u0027"},{"line_number":29,"context_line":"_DERIVED_PCI_WHITELIST_FILE \u003d \u0027/etc/puppet/hieradata/pci_passthrough_whitelist.json\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"MAX_VENDOR_ID \u003d 0xFFFF"},{"line_number":32,"context_line":"MAX_PRODUCT_ID \u003d 0xFFFF"},{"line_number":33,"context_line":"MAX_FUNC \u003d 0x7"},{"line_number":34,"context_line":"MAX_DOMAIN \u003d 0xFFFF"}],"source_content_type":"text/x-python","patch_set":12,"id":"b6693340_a56a17c6","line":31,"in_reply_to":"ac1df3d8_e341ef9d","updated":"2022-01-20 14:12:37.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"42291035c77b438ec4d9d30f85b71996f08e25f9","unresolved":true,"context_lines":[{"line_number":29,"context_line":"_DERIVED_PCI_WHITELIST_FILE \u003d \u0027/etc/puppet/hieradata/pci_passthrough_whitelist.json\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"MAX_VENDOR_ID \u003d 0xFFFF"},{"line_number":32,"context_line":"MAX_PRODUCT_ID \u003d 0xFFFF"},{"line_number":33,"context_line":"MAX_FUNC \u003d 0x7"},{"line_number":34,"context_line":"MAX_DOMAIN \u003d 0xFFFF"},{"line_number":35,"context_line":"MAX_BUS \u003d 0xFF"}],"source_content_type":"text/x-python","patch_set":12,"id":"1a5b19a3_24e19d76","line":32,"updated":"2022-01-17 08:21:27.000000000","message":"same as above","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3c2d2d72ddf4a9cc264dada35c3ee2f0fc75e25e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"_DERIVED_PCI_WHITELIST_FILE \u003d \u0027/etc/puppet/hieradata/pci_passthrough_whitelist.json\u0027"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"MAX_VENDOR_ID \u003d 0xFFFF"},{"line_number":32,"context_line":"MAX_PRODUCT_ID \u003d 0xFFFF"},{"line_number":33,"context_line":"MAX_FUNC \u003d 0x7"},{"line_number":34,"context_line":"MAX_DOMAIN \u003d 0xFFFF"},{"line_number":35,"context_line":"MAX_BUS \u003d 0xFF"}],"source_content_type":"text/x-python","patch_set":12,"id":"0d4622d3_b87683a8","line":32,"in_reply_to":"1a5b19a3_24e19d76","updated":"2022-01-20 14:12:37.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"42291035c77b438ec4d9d30f85b71996f08e25f9","unresolved":true,"context_lines":[{"line_number":36,"context_line":"MAX_SLOT \u003d 0x1F"},{"line_number":37,"context_line":"ANY \u003d \u0027*\u0027"},{"line_number":38,"context_line":"REGEX_ANY \u003d \u0027.*\u0027"},{"line_number":39,"context_line":"_SRIOV_TOTALVFS \u003d \"sriov_totalvfs\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class InvalidConfigException(ValueError):"}],"source_content_type":"text/x-python","patch_set":12,"id":"5e055f39_152347ee","line":39,"updated":"2022-01-17 08:21:27.000000000","message":"Unused and hence shall be removed","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3c2d2d72ddf4a9cc264dada35c3ee2f0fc75e25e","unresolved":false,"context_lines":[{"line_number":36,"context_line":"MAX_SLOT \u003d 0x1F"},{"line_number":37,"context_line":"ANY \u003d \u0027*\u0027"},{"line_number":38,"context_line":"REGEX_ANY \u003d \u0027.*\u0027"},{"line_number":39,"context_line":"_SRIOV_TOTALVFS \u003d \"sriov_totalvfs\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"class InvalidConfigException(ValueError):"}],"source_content_type":"text/x-python","patch_set":12,"id":"f080ff01_958bef33","line":39,"in_reply_to":"5e055f39_152347ee","updated":"2022-01-20 14:12:37.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"42291035c77b438ec4d9d30f85b71996f08e25f9","unresolved":true,"context_lines":[{"line_number":72,"context_line":"    if dbs:"},{"line_number":73,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"},{"line_number":74,"context_line":"        if len(dbs_fields) \u003e 3:"},{"line_number":75,"context_line":"            raise ValueError(\u0027Invalid PCI address specififed {!r}\u0027.format(pci_addr))"},{"line_number":76,"context_line":"        # If we got a partial address like \":00.\", we need to turn this"},{"line_number":77,"context_line":"        # into a domain of ANY, a bus of ANY, and a slot of 00. This code"},{"line_number":78,"context_line":"        # allows the address,bus and/or domain to be left off"}],"source_content_type":"text/x-python","patch_set":12,"id":"7e8c7e30_72758f70","line":75,"updated":"2022-01-17 08:21:27.000000000","message":"Instead of ValueError, can InvalidConfigException be raised ? A testcase shall be added for invalid PCI address with 3 colons (:)","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3c2d2d72ddf4a9cc264dada35c3ee2f0fc75e25e","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    if dbs:"},{"line_number":73,"context_line":"        dbs_fields \u003d dbs.split(\u0027:\u0027)"},{"line_number":74,"context_line":"        if len(dbs_fields) \u003e 3:"},{"line_number":75,"context_line":"            raise ValueError(\u0027Invalid PCI address specififed {!r}\u0027.format(pci_addr))"},{"line_number":76,"context_line":"        # If we got a partial address like \":00.\", we need to turn this"},{"line_number":77,"context_line":"        # into a domain of ANY, a bus of ANY, and a slot of 00. This code"},{"line_number":78,"context_line":"        # allows the address,bus and/or domain to be left off"}],"source_content_type":"text/x-python","patch_set":12,"id":"fbc7b584_6004cc59","line":75,"in_reply_to":"7e8c7e30_72758f70","updated":"2022-01-20 14:12:37.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"42291035c77b438ec4d9d30f85b71996f08e25f9","unresolved":true,"context_lines":[{"line_number":278,"context_line":"# |  specified |     NIC Part VFs      |                           |                   |"},{"line_number":279,"context_line":"# |            |                       |                           |                   |"},{"line_number":280,"context_line":"# +------------+-----------------------+---------------------------+-------------------+"},{"line_number":281,"context_line":"def get_passthrough_config(user_config, pf,"},{"line_number":282,"context_line":"  allocated_pci, skip_user_config: bool, is_non_nic_pf: bool):"},{"line_number":283,"context_line":"    \"\"\"Handle all variations of user specifid pci addr format"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"4f2f90e9_25d9d7d0","line":281,"updated":"2022-01-17 08:21:27.000000000","message":"A brief comment explaining the parameters could help the reader with better understanding","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3c2d2d72ddf4a9cc264dada35c3ee2f0fc75e25e","unresolved":false,"context_lines":[{"line_number":278,"context_line":"# |  specified |     NIC Part VFs      |                           |                   |"},{"line_number":279,"context_line":"# |            |                       |                           |                   |"},{"line_number":280,"context_line":"# +------------+-----------------------+---------------------------+-------------------+"},{"line_number":281,"context_line":"def get_passthrough_config(user_config, pf,"},{"line_number":282,"context_line":"  allocated_pci, skip_user_config: bool, is_non_nic_pf: bool):"},{"line_number":283,"context_line":"    \"\"\"Handle all variations of user specifid pci addr format"},{"line_number":284,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"fda86942_1d3b635f","line":281,"in_reply_to":"4f2f90e9_25d9d7d0","updated":"2022-01-20 14:12:37.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"e9416eb277cdedb7577b2162972553ba254fe98f","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        product id\u0027s of PF, then add the PF\u0027s provided its not a"},{"line_number":340,"context_line":"        NIC Partitioning PF"},{"line_number":341,"context_line":"        \"\"\""},{"line_number":342,"context_line":"        if pf_id_match or vf_id_match:"},{"line_number":343,"context_line":"            if is_non_nic_pf:"},{"line_number":344,"context_line":"                # If NON NIC Part PF matches, then add the complete device"},{"line_number":345,"context_line":"                sel_addr.append(parent_pci_address)"}],"source_content_type":"text/x-python","patch_set":12,"id":"a8f4b51a_8a42838e","line":342,"updated":"2022-01-18 06:27:14.000000000","message":"Logic should be for 3 cases:\n1) sel_addr.append(parent_pci_address)\n2) skip_user_config \u003d True\n3) for pci_addr in pci_addresses[pf]: ...\n\nChange the conditions so that it is more even there is code repition.","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"de415e5a57b6fcb2b4690364056619b8289f1af0","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        product id\u0027s of PF, then add the PF\u0027s provided its not a"},{"line_number":340,"context_line":"        NIC Partitioning PF"},{"line_number":341,"context_line":"        \"\"\""},{"line_number":342,"context_line":"        if pf_id_match or vf_id_match:"},{"line_number":343,"context_line":"            if is_non_nic_pf:"},{"line_number":344,"context_line":"                # If NON NIC Part PF matches, then add the complete device"},{"line_number":345,"context_line":"                sel_addr.append(parent_pci_address)"}],"source_content_type":"text/x-python","patch_set":12,"id":"b9536a04_c1db5194","line":342,"in_reply_to":"a8f4b51a_8a42838e","updated":"2022-01-21 07:38:26.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"e9416eb277cdedb7577b2162972553ba254fe98f","unresolved":true,"context_lines":[{"line_number":409,"context_line":"        passthrough_tmp, skip_user_config \u003d get_passthrough_config("},{"line_number":410,"context_line":"            user_config, pf, allocated_pci, skip_user_config, False)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if passthrough_tmp is None or len(passthrough_tmp) \u003d\u003d 0:"},{"line_number":413,"context_line":"            continue"},{"line_number":414,"context_line":"        else:"},{"line_number":415,"context_line":"            nic_part_config.extend(passthrough_tmp)"}],"source_content_type":"text/x-python","patch_set":12,"id":"1ec28baf_d8e5b48a","line":412,"updated":"2022-01-18 06:27:14.000000000","message":"Why not as below (continue is not required as it is only one if condition for this loop):\n    if  passthrough_tmp:\n        nic_part_config.extend(passthrough_tmp)","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"de415e5a57b6fcb2b4690364056619b8289f1af0","unresolved":false,"context_lines":[{"line_number":409,"context_line":"        passthrough_tmp, skip_user_config \u003d get_passthrough_config("},{"line_number":410,"context_line":"            user_config, pf, allocated_pci, skip_user_config, False)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"        if passthrough_tmp is None or len(passthrough_tmp) \u003d\u003d 0:"},{"line_number":413,"context_line":"            continue"},{"line_number":414,"context_line":"        else:"},{"line_number":415,"context_line":"            nic_part_config.extend(passthrough_tmp)"}],"source_content_type":"text/x-python","patch_set":12,"id":"2fabae38_5727e3bc","line":412,"in_reply_to":"1ec28baf_d8e5b48a","updated":"2022-01-21 07:38:26.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"e9416eb277cdedb7577b2162972553ba254fe98f","unresolved":true,"context_lines":[{"line_number":466,"context_line":"    nic_partition_pfs \u003d get_sriov_nic_partition_pfs(system_configs)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    for user_config in user_configs:"},{"line_number":469,"context_line":"        if (\u0027address\u0027 not in user_config and"},{"line_number":470,"context_line":"            \u0027product_id\u0027 not in user_config and"},{"line_number":471,"context_line":"            \u0027devname\u0027 not in user_config):"},{"line_number":472,"context_line":"            pf \u003d get_pf_name_from_phy_network(user_config[\u0027physical_network\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"bd339aa0_7ea593f1","line":469,"updated":"2022-01-18 06:27:14.000000000","message":"Can be simplified like:\n\n        if (\u0027devname\u0027 in user_config and \u0027address\u0027 in user_config):\n            msg \u003d f\"Both devname and address can\u0027t be present in {_PASSTHROUGH_WHITELIST_KEY}\"\n            raise InvalidConfigException(msg)\n\n        keys \u003d [\u0027address\u0027, \u0027product_id\u0027, \u0027devname]\n        if not any(k in user_config for k in keys):\n            # address or product_id or devname not present in user_config\n            pf \u003d get_pf_name_from_phy_network(user_config[\u0027physical_network\u0027])\n            user_config[\u0027address\u0027] \u003d get_pci_addr_from_ifname(pf)\n\n        if \u0027devname\u0027 in user_config:\n            if user_config[\u0027devname\u0027] in nic_partition_pfs:\n                user_config[\u0027address\u0027] \u003d get_pci_addr_from_ifname(user_config[\u0027devname\u0027])\n                del user_config[\u0027devname\u0027]\n            else:\n               non_nic_part_config.append(user_config)\n               continue\n\n        if (\u0027address\u0027 in user_config or\n           \u0027product_id\u0027 in user_config):\n            ...","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"de415e5a57b6fcb2b4690364056619b8289f1af0","unresolved":false,"context_lines":[{"line_number":466,"context_line":"    nic_partition_pfs \u003d get_sriov_nic_partition_pfs(system_configs)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    for user_config in user_configs:"},{"line_number":469,"context_line":"        if (\u0027address\u0027 not in user_config and"},{"line_number":470,"context_line":"            \u0027product_id\u0027 not in user_config and"},{"line_number":471,"context_line":"            \u0027devname\u0027 not in user_config):"},{"line_number":472,"context_line":"            pf \u003d get_pf_name_from_phy_network(user_config[\u0027physical_network\u0027])"}],"source_content_type":"text/x-python","patch_set":12,"id":"c52a1fd2_0f11cadd","line":469,"in_reply_to":"bd339aa0_7ea593f1","updated":"2022-01-21 07:38:26.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"e9416eb277cdedb7577b2162972553ba254fe98f","unresolved":true,"context_lines":[{"line_number":490,"context_line":"           \u0027product_id\u0027 in user_config):"},{"line_number":491,"context_line":"            passthrough_tmp, status \u003d get_passthrough_config_all_pf("},{"line_number":492,"context_line":"                user_config, system_configs, allocated_pci)"},{"line_number":493,"context_line":"            if len(passthrough_tmp) \u003d\u003d 0 and status \u003d\u003d 0:"},{"line_number":494,"context_line":"                non_nic_part_config.append(user_config)"},{"line_number":495,"context_line":"            elif status \u003d\u003d 0:"},{"line_number":496,"context_line":"                nic_part_config.extend(passthrough_tmp)"},{"line_number":497,"context_line":"        else:"},{"line_number":498,"context_line":"            non_nic_part_config.append(user_config)"},{"line_number":499,"context_line":"    return (non_nic_part_config, nic_part_config)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ca9281de_018fb52d","line":496,"range":{"start_line":493,"start_character":0,"end_line":496,"end_character":0},"updated":"2022-01-18 06:27:14.000000000","message":"change status to skip_user_config","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"de415e5a57b6fcb2b4690364056619b8289f1af0","unresolved":false,"context_lines":[{"line_number":490,"context_line":"           \u0027product_id\u0027 in user_config):"},{"line_number":491,"context_line":"            passthrough_tmp, status \u003d get_passthrough_config_all_pf("},{"line_number":492,"context_line":"                user_config, system_configs, allocated_pci)"},{"line_number":493,"context_line":"            if len(passthrough_tmp) \u003d\u003d 0 and status \u003d\u003d 0:"},{"line_number":494,"context_line":"                non_nic_part_config.append(user_config)"},{"line_number":495,"context_line":"            elif status \u003d\u003d 0:"},{"line_number":496,"context_line":"                nic_part_config.extend(passthrough_tmp)"},{"line_number":497,"context_line":"        else:"},{"line_number":498,"context_line":"            non_nic_part_config.append(user_config)"},{"line_number":499,"context_line":"    return (non_nic_part_config, nic_part_config)"}],"source_content_type":"text/x-python","patch_set":12,"id":"e22d5b2a_20689cb1","line":496,"range":{"start_line":493,"start_character":0,"end_line":496,"end_character":0},"in_reply_to":"ca9281de_018fb52d","updated":"2022-01-21 07:38:26.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18575,"name":"Saravanan KR","email":"krsacme@gmail.com","username":"saravanankr"},"change_message_id":"e9416eb277cdedb7577b2162972553ba254fe98f","unresolved":true,"context_lines":[{"line_number":508,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":509,"context_line":"        user_configs, system_configs)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    if len(nic_part) \u003e 0:"},{"line_number":512,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":513,"context_line":"                                                       nic_part)"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"a028f0e3_aa8e6fae","line":511,"updated":"2022-01-18 06:27:14.000000000","message":"change the condition to \"len(user_configs) !\u003d len(non_nic_part)\" then write the file, and then remove else part. This covers the case when exact pci of nic part device is given, whic should be removed and user config should be updated.","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"de415e5a57b6fcb2b4690364056619b8289f1af0","unresolved":false,"context_lines":[{"line_number":508,"context_line":"    non_nic_part, nic_part \u003d generate_combined_configuration("},{"line_number":509,"context_line":"        user_configs, system_configs)"},{"line_number":510,"context_line":""},{"line_number":511,"context_line":"    if len(nic_part) \u003e 0:"},{"line_number":512,"context_line":"        pci_passthrough[_PASSTHROUGH_WHITELIST_KEY] \u003d (non_nic_part +"},{"line_number":513,"context_line":"                                                       nic_part)"},{"line_number":514,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"2a678185_4cb77049","line":511,"in_reply_to":"a028f0e3_aa8e6fae","updated":"2022-01-21 07:38:26.000000000","message":"Done","commit_id":"9fa5ec4d4337ac9ed2121cea4ac5eeeda398f9cb"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"cfc799dfc240fbd2cca1f1f9f7faaeec271b52ae","unresolved":true,"context_lines":[{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    # Check if user config list is valid"},{"line_number":544,"context_line":"    if not isinstance(user_configs, list):"},{"line_number":545,"context_line":"        raise Exception(f\u0027user_config specified is not a list {user_configs}\u0027)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    user_config_copy, derived \u003d generate_combined_configuration("},{"line_number":548,"context_line":"        user_configs, system_configs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"5bfb7e8e_32130c95","line":545,"updated":"2022-01-24 10:15:24.000000000","message":"Can we raise InvalidConfigException instead ?","commit_id":"1c3d214b2c8c4297e7397eb62fb20bee8697dd04"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"36a533e59965ea36b5447e9a2413bb35834487a9","unresolved":false,"context_lines":[{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    # Check if user config list is valid"},{"line_number":544,"context_line":"    if not isinstance(user_configs, list):"},{"line_number":545,"context_line":"        raise Exception(f\u0027user_config specified is not a list {user_configs}\u0027)"},{"line_number":546,"context_line":""},{"line_number":547,"context_line":"    user_config_copy, derived \u003d generate_combined_configuration("},{"line_number":548,"context_line":"        user_configs, system_configs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"b78dbde2_54af2c0c","line":545,"in_reply_to":"5bfb7e8e_32130c95","updated":"2022-01-24 13:26:19.000000000","message":"Done","commit_id":"1c3d214b2c8c4297e7397eb62fb20bee8697dd04"}],"tox.ini":[{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"7e0bdb267c44cde321b9e645e123aa443014c240","unresolved":true,"context_lines":[{"line_number":110,"context_line":"    pytest --color\u003dno \\"},{"line_number":111,"context_line":"           --html\u003d{envlogdir}/reports.html \\"},{"line_number":112,"context_line":"           --self-contained-html \\"},{"line_number":113,"context_line":"           {toxinidir}/tripleo_heat_templates/tests/test_tht_ansible_syntax.py {toxinidir}/tripleo_heat_templates/tests/test_tht_derivce_pci.py"}],"source_content_type":"text/x-properties","patch_set":3,"id":"70fedce2_29dd4c73","line":113,"updated":"2021-07-06 12:25:27.000000000","message":"nit: i think this change is not required","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"0815ce7c173392a97920c9a92d564c090631ebc3","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    pytest --color\u003dno \\"},{"line_number":111,"context_line":"           --html\u003d{envlogdir}/reports.html \\"},{"line_number":112,"context_line":"           --self-contained-html \\"},{"line_number":113,"context_line":"           {toxinidir}/tripleo_heat_templates/tests/test_tht_ansible_syntax.py {toxinidir}/tripleo_heat_templates/tests/test_tht_derivce_pci.py"}],"source_content_type":"text/x-properties","patch_set":3,"id":"907d3e39_3c2b7bc2","line":113,"in_reply_to":"70fedce2_29dd4c73","updated":"2021-12-03 05:58:56.000000000","message":"This is required as the UT for derive scripts are added here","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"}],"tripleo_heat_templates/tests/test_tht_derivce_pci.py":[{"author":{"_account_id":22865,"name":"Jaganathan Palanisamy","email":"jpalanis@redhat.com","username":"jaganathancse"},"change_message_id":"7e0bdb267c44cde321b9e645e123aa443014c240","unresolved":true,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":3,"id":"9c4806fa_b6e3b5c6","line":1,"updated":"2021-07-06 12:25:27.000000000","message":"I think, we need to create this test cases python file inside test directory under deployment/neutron path.\nsimilar like container_config_scripts/tests","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"3cdd6946281609b6b99d081bb680a00df40a46b8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":3,"id":"2be31374_3a77d936","line":1,"in_reply_to":"9c4806fa_b6e3b5c6","updated":"2021-12-03 05:53:42.000000000","message":"To follow existing DIR tree, leaving this file in thhis path itself","commit_id":"c94e09c39b6ffa0dc2c128c1a6d8d840dce18224"},{"author":{"_account_id":18904,"name":"Karthik S","email":"ksundara@redhat.com","username":"karthiks"},"change_message_id":"cb223a6fbda562c7fb7daba8f3b4e7bdfce72ada","unresolved":true,"context_lines":[{"line_number":83,"context_line":"                self.write_file(vf_pci_path, \"vendor\", entry[\u0027vendor\u0027])"},{"line_number":84,"context_line":"                vf_id \u003d vf_id + 1"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_passthrough_config_by_product_vf_1(self):"},{"line_number":87,"context_line":"        user_config1 \u003d [{\u0027product_id\u0027: \u0027154c\u0027, \u0027vendor_id\u0027: \u00278086\u0027, \u0027trusted\u0027: \u0027true\u0027}]"},{"line_number":88,"context_line":"        system_configs \u003d ["},{"line_number":89,"context_line":"            {\u0027device_type\u0027: \u0027pf\u0027, \u0027link_mode\u0027: \u0027legacy\u0027, \u0027name\u0027: \u0027eno3\u0027, \u0027numvfs\u0027: 4, \u0027promisc\u0027: \u0027on\u0027},"}],"source_content_type":"text/x-python","patch_set":10,"id":"3b58061d_43ce4446","line":86,"updated":"2021-12-15 05:56:24.000000000","message":"Please replicate fake sysfs based simulation for all usecases\n1. Product id and PCI address of PF is given in user templates with non NIC-Part interface\n2. Product id and PCI address of PF is given in user templates with NIC-Part interface\n3. Product id of VF, PCI address of PF in user templates\n4. Product id of VF, PCI Address of VF\u0027s in user templates\n5. Use dev name instead of PCI address for above use case 1\n6. Use regex while specifying the PCI address in case 1,2,3,4,5","commit_id":"71e61c6026cacbaf8ea4c57f85539c6bc9978cb8"},{"author":{"_account_id":33688,"name":"Vijayalakshmi","display_name":"Viji Candappa","email":"vcandapp@redhat.com","username":"VijiC"},"change_message_id":"7bc438e4a6b23a0a2e4236142c109037740b0b5e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                self.write_file(vf_pci_path, \"vendor\", entry[\u0027vendor\u0027])"},{"line_number":84,"context_line":"                vf_id \u003d vf_id + 1"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    def test_get_passthrough_config_by_product_vf_1(self):"},{"line_number":87,"context_line":"        user_config1 \u003d [{\u0027product_id\u0027: \u0027154c\u0027, \u0027vendor_id\u0027: \u00278086\u0027, \u0027trusted\u0027: \u0027true\u0027}]"},{"line_number":88,"context_line":"        system_configs \u003d ["},{"line_number":89,"context_line":"            {\u0027device_type\u0027: \u0027pf\u0027, \u0027link_mode\u0027: \u0027legacy\u0027, \u0027name\u0027: \u0027eno3\u0027, \u0027numvfs\u0027: 4, \u0027promisc\u0027: \u0027on\u0027},"}],"source_content_type":"text/x-python","patch_set":10,"id":"e296e6dd_c11de867","line":86,"in_reply_to":"3b58061d_43ce4446","updated":"2021-12-23 09:12:32.000000000","message":"Done","commit_id":"71e61c6026cacbaf8ea4c57f85539c6bc9978cb8"}]}
