)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":11,"context_line":"can only be done before the port is bound. However during migration Nova"},{"line_number":12,"context_line":"does not update the MAC when the port is bound to a different physical"},{"line_number":13,"context_line":"device on the destination host."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch extends the libvirt virt driver to provide the MAC address of"},{"line_number":16,"context_line":"the PF in the pci_info returned to the resource tracker. This"},{"line_number":17,"context_line":"information will be then persisted in the extra_info field of the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"66b9f3ba_5c40e989","line":14,"updated":"2022-04-14 13:15:38.000000000","message":"yep","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":11,"context_line":"can only be done before the port is bound. However during migration Nova"},{"line_number":12,"context_line":"does not update the MAC when the port is bound to a different physical"},{"line_number":13,"context_line":"device on the destination host."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"This patch extends the libvirt virt driver to provide the MAC address of"},{"line_number":16,"context_line":"the PF in the pci_info returned to the resource tracker. This"},{"line_number":17,"context_line":"information will be then persisted in the extra_info field of the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"656db4b6_80903b76","line":14,"in_reply_to":"66b9f3ba_5c40e989","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":22,"context_line":"physical device in the port binding profile according to the device on"},{"line_number":23,"context_line":"the destination host."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The related neutron change Ib0638f5db69cb92daf6932890cb89e83cf84f295"},{"line_number":26,"context_line":"uses this info from the binding profile to update the mac_address field"},{"line_number":27,"context_line":"of the port when the binding is activated."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"8278bcd5_2a02545c","line":25,"range":{"start_line":25,"start_character":27,"end_line":25,"end_character":68},"updated":"2022-04-14 13:15:38.000000000","message":"i guess we dont actully need a depends on here since this wont actully be a regressions if this is merged without that patch.\nbut for the bug to be fully closed both will be needed.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":22,"context_line":"physical device in the port binding profile according to the device on"},{"line_number":23,"context_line":"the destination host."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"The related neutron change Ib0638f5db69cb92daf6932890cb89e83cf84f295"},{"line_number":26,"context_line":"uses this info from the binding profile to update the mac_address field"},{"line_number":27,"context_line":"of the port when the binding is activated."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"188dda37_92119e55","line":25,"range":{"start_line":25,"start_character":27,"end_line":25,"end_character":68},"in_reply_to":"8278bcd5_2a02545c","updated":"2022-04-21 08:52:35.000000000","message":"yepp","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"358869db75d30cfb7bdc7b920786fec72aad41f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"685ffc92_2da7ac37","updated":"2022-02-15 14:29:02.000000000","message":"This needs test coverage","commit_id":"edfa6313fd762622f8ed1ac890d001da51114e1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"d4b16a4decd5f2c96c776c7aa824b384ed7cba0f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fdfcffd4_e5332105","in_reply_to":"685ffc92_2da7ac37","updated":"2022-02-15 16:47:10.000000000","message":"and need to handle the \n* live migration case: needs update on the migration vif\n* cross cell resize: probably works as it already goes through network_api.migrate_instance_finish code path, the same as cold migrate.\n* unshelve after shelve offload","commit_id":"edfa6313fd762622f8ed1ac890d001da51114e1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"195b3d8041477d4c38c323a6f9681ef6e43c2063","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"386a523e_3497139a","in_reply_to":"fdfcffd4_e5332105","updated":"2022-02-15 17:25:05.000000000","message":"Based on my testing PS2 now handles migrate, resize, live migrate, unshelve after shelve offload. I cannot test cross cell resize locally but I think it works via the same network_api.migrate_instance_finish code path as migrate.","commit_id":"edfa6313fd762622f8ed1ac890d001da51114e1c"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"f3ce5a4edd0a8a76be21877a5f69301be4d683d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"a1be44f7_23763902","updated":"2022-02-21 11:50:29.000000000","message":"This needs a redo. the neutron in nova is called from the compute manager so it should not depend on linux specific thing like sysfs\n","commit_id":"ad8186cff3aa0fdc539e2fc0f31748dcba7b6815"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"89caa025b60ddf822edf2816a608eb0066a6710f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"7942652b_677f2593","updated":"2022-03-04 13:01:23.000000000","message":"I need to add a release note ","commit_id":"ce2ea4b4b5c5348b5eb7774b6d8d00f8715e0dc2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bad9428854f7286ea0bfbf12340680039363f2a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"081640a1_d5c5f76b","updated":"2022-03-20 10:55:36.000000000","message":"recheck","commit_id":"f29a7794ba6e69124ff0005e92656f7e9aebf0b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a4f0255af9586339fefb31129050d0f6822d1bec","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"e649e3b1_0d4a0da6","updated":"2022-03-20 10:56:18.000000000","message":"tested this patch together with the neutron-lib and neutron patches in a real SRIOV env. It works as expected: https://paste.opendev.org/show/blmqhZ4A0fFeVVc75dY5/","commit_id":"f29a7794ba6e69124ff0005e92656f7e9aebf0b3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aab45d8e0d64ae8ad2d944325bc1f8da98f9e817","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fa8d0ef5_5cd69daf","updated":"2022-03-20 09:03:25.000000000","message":"the naming discussion from the previous PS has not been concluded yet.","commit_id":"f29a7794ba6e69124ff0005e92656f7e9aebf0b3"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"1b9aff37d3927f844e11bbfabadedfe35590d7c8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"787c6e9c_2cd4a3be","updated":"2022-03-25 09:50:09.000000000","message":"I\u0027m okay with the API usage, I leave the nova implementation part to nova folks.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"57f981c9_d977eaff","updated":"2022-04-21 08:52:35.000000000","message":"I\u0027ve resolved the merge conflict","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"aef02a97_c9b28715","updated":"2022-04-14 13:15:38.000000000","message":"this is in merge conflcit, ill continue my review but so far it looks good so +1 for now","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d323e4d466e95ec165c2ae4021e6b7c709ab237","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3becc999_eafcaefc","updated":"2022-04-21 12:41:00.000000000","message":"recheck libvirt.libvirtError: Timed out during operation: cannot acquire state change lock (held by monitor\u003dremoteDispatchDomainMigratePerform3Params)\n\nthis looks unrelated to your code change\n\n+2 assuming the recheck does not tigger the same failure on grenade.\nif it does we will have to llook more closely at the how this could cause that error but i think\nit might just be a slow node\nhttps://zuul.opendev.org/t/openstack/build/4556b4ef480b44b5a9457ba3821876a9/log/compute1/logs/screen-n-cpu.txt#11118","commit_id":"fdd12946bc5bba2e01a9b234a79c3e72d0cf861e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"faad960d0a3bc661236d4e8bffd6228482f9e544","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"cecceca2_c9c9d7fd","updated":"2022-04-21 16:18:39.000000000","message":"recheck multiple package mirror issues e.g.:https://zuul.opendev.org/t/openstack/build/500a94159a114a859e5f3716d5df4fec/log/job-output.txt#8294\n","commit_id":"fdd12946bc5bba2e01a9b234a79c3e72d0cf861e"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"a39110cf0f898674645adb49f4d17f883ab1d74e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"ea6ce3b5_0577b2fd","updated":"2022-04-29 17:35:14.000000000","message":"resolved the merge conflict","commit_id":"20a2c36e2978880f8521ebd3ff062033d6bab516"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5b56ecb2_766e1151","updated":"2022-06-13 15:18:57.000000000","message":"Mostly nits, no need to hold this change but gibi, please look at my comments before I click on submit.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"0be3c098cfc086244b99d2dc54dbc8c8c660edab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"f080f5c3_f686c901","updated":"2022-06-13 16:01:05.000000000","message":"gibi replied, no reasons to ask for a FUP here.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"ff86f7563bdcca1c9cedb8ecddd6a56442827b20","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"858aaa3e_b4435007","updated":"2022-06-13 10:12:42.000000000","message":"just rebase / merge conflicts changes since i last reviewed so this still looks good to me","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"241a373c08372da0d29f349b382b1fea7956d676","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"98305d92_03b8ced5","updated":"2022-05-05 10:45:43.000000000","message":"recheck bug 1960346","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"bb42772febd4eb73349c856de9ef93e8c34df3c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"d4f52da6_63354b10","updated":"2022-05-04 10:25:05.000000000","message":"recheck bug 1971563","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}],"nova/compute/manager.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"537321b9b076ba468c10920316d6f55713115a92","unresolved":true,"context_lines":[{"line_number":10798,"context_line":""},{"line_number":10799,"context_line":"            pci_dev \u003d port_id_to_pci_dev[port_id]"},{"line_number":10800,"context_line":"            profile \u003d copy.deepcopy(mig_vif.source_vif[\u0027profile\u0027])"},{"line_number":10801,"context_line":"            profile.update(self.network_api._get_pci_device_profile(pci_dev))"},{"line_number":10802,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10803,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""},{"line_number":10804,"context_line":"                      \"%(profile)s\", {\u0027port_id\u0027: port_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"8018879e_7130a710","line":10801,"updated":"2022-02-21 16:17:08.000000000","message":"this is a sysfs coupling. Instead we should add the necessary information the the PciDevice object via the virt driver and simply read from that object here.","commit_id":"ad8186cff3aa0fdc539e2fc0f31748dcba7b6815"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa7b80a783296c545a6f6119b3ec1242372f8829","unresolved":false,"context_lines":[{"line_number":10798,"context_line":""},{"line_number":10799,"context_line":"            pci_dev \u003d port_id_to_pci_dev[port_id]"},{"line_number":10800,"context_line":"            profile \u003d copy.deepcopy(mig_vif.source_vif[\u0027profile\u0027])"},{"line_number":10801,"context_line":"            profile.update(self.network_api._get_pci_device_profile(pci_dev))"},{"line_number":10802,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10803,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""},{"line_number":10804,"context_line":"                      \"%(profile)s\", {\u0027port_id\u0027: port_id,"}],"source_content_type":"text/x-python","patch_set":3,"id":"70bccc1d_240b6e00","line":10801,"in_reply_to":"8018879e_7130a710","updated":"2022-03-03 07:25:08.000000000","message":"Done","commit_id":"ad8186cff3aa0fdc539e2fc0f31748dcba7b6815"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":10930,"context_line":"                profile[\u0027vf_num\u0027] \u003d pci_dev.sriov_cap[\u0027vf_num\u0027]"},{"line_number":10931,"context_line":""},{"line_number":10932,"context_line":"            if pci_dev.mac_address:"},{"line_number":10933,"context_line":"                profile[\u0027device_mac_address\u0027] \u003d pci_dev.mac_address"},{"line_number":10934,"context_line":""},{"line_number":10935,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10936,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""}],"source_content_type":"text/x-python","patch_set":9,"id":"e064fc88_713c2979","line":10933,"updated":"2022-06-13 15:18:57.000000000","message":"well, I could argue on this conditional by saying I don\u0027t like to have optional keys in a dict, and I\u0027d rather prefer to have nullable values (or any other flag saying this is unset) but meh, all of the above does this already :-)","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6855c8714b0c281a211d761a3ccd393d4508e217","unresolved":false,"context_lines":[{"line_number":10930,"context_line":"                profile[\u0027vf_num\u0027] \u003d pci_dev.sriov_cap[\u0027vf_num\u0027]"},{"line_number":10931,"context_line":""},{"line_number":10932,"context_line":"            if pci_dev.mac_address:"},{"line_number":10933,"context_line":"                profile[\u0027device_mac_address\u0027] \u003d pci_dev.mac_address"},{"line_number":10934,"context_line":""},{"line_number":10935,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10936,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""}],"source_content_type":"text/x-python","patch_set":9,"id":"4b9c03ef_377b85cd","line":10933,"in_reply_to":"39219517_f07aa7e9","updated":"2022-06-13 16:22:07.000000000","message":"the binding profile is owned by nova.\nor at least the feild is defiend as being used to pass info form the compute backend to the network backend\n\nso nuetron in generaly shoudl not add keys too it and its an admin only field which operators are not ment to modify.\n\nthere is only one usage of this that is not drive by nova which is for the trusted vf feature and that shoudl be ported to a neutron network extesntiosn eventually.\n\nhttps://github.com/openstack/neutron-lib/blob/master/neutron_lib/api/definitions/portbindings.py#L31-L34\u003d\n\n\"\"\"# The profile will be a dictionary that enables the application running\n# on the specific host to pass and receive vif port specific information to\n# the plugin.\nPROFILE \u003d \u0027binding:profile\u0027\n\"\"\"\"\n\nits phrased that way since application running on the specific host can be nova, ironic or zun.\n\n\nbut each such applciation can more or less assume they have full ownership fo the port profile filed.\n\ni would consider adding unused keys with a null value to be an anti pattern and i do not think we shoudl do that.\n\nits an anti patther as its increaseing the data that we send over the wire and it woudl be contreay to all other usage of this field.\n\nthe established workflow is to only define keys if the value shoudl be used.\n\ne.g. we dont define the pci_slot key for non sriov ports.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":10930,"context_line":"                profile[\u0027vf_num\u0027] \u003d pci_dev.sriov_cap[\u0027vf_num\u0027]"},{"line_number":10931,"context_line":""},{"line_number":10932,"context_line":"            if pci_dev.mac_address:"},{"line_number":10933,"context_line":"                profile[\u0027device_mac_address\u0027] \u003d pci_dev.mac_address"},{"line_number":10934,"context_line":""},{"line_number":10935,"context_line":"            mig_vif.profile \u003d profile"},{"line_number":10936,"context_line":"            LOG.debug(\"Updating migrate VIF profile for port %(port_id)s:\""}],"source_content_type":"text/x-python","patch_set":9,"id":"39219517_f07aa7e9","line":10933,"in_reply_to":"e064fc88_713c2979","updated":"2022-06-13 15:50:58.000000000","message":"We can start fixing it by first creating some description about what is the expected / allowed structure of the profile in Neutron. Looking at the Neutron code[1] passing device_mac_address\u003dNone would not cause any trouble.\n\nIn the other hand we explicitly remove keys from the profile when the port in unbound. So I think not having the key is pretty normal.\n\nI will keep this as is now.\n\n[1] https://review.opendev.org/c/openstack/neutron/+/829247/11/neutron/plugins/ml2/plugin.py#776","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}],"nova/network/neutron.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"537321b9b076ba468c10920316d6f55713115a92","unresolved":true,"context_lines":[{"line_number":1634,"context_line":"                dev_profile.update("},{"line_number":1635,"context_line":"                    self._get_vf_pci_device_profile(pci_dev))"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"            if pci_dev.dev_type \u003d\u003d obj_fields.PciDeviceType.SRIOV_PF:"},{"line_number":1638,"context_line":"                # In general the MAC address information flows fom the neutron"},{"line_number":1639,"context_line":"                # port to the device in the backend. Except for direct-physical"},{"line_number":1640,"context_line":"                # ports. In that case the MAC address flows from the physical"},{"line_number":1641,"context_line":"                # device, the PF, to the neutron port. So when such a port is"},{"line_number":1642,"context_line":"                # being bound to a host the port\u0027s MAC address needs to be"},{"line_number":1643,"context_line":"                # updated. Nova needs to put the new MAC into the binding"},{"line_number":1644,"context_line":"                # profile."},{"line_number":1645,"context_line":"                dev_profile.update("},{"line_number":1646,"context_line":"                    self._get_pf_pci_device_profile(pci_dev))"},{"line_number":1647,"context_line":""},{"line_number":1648,"context_line":"            return dev_profile"},{"line_number":1649,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"15d02eea_519fe206","line":1646,"range":{"start_line":1637,"start_character":0,"end_line":1646,"end_character":61},"updated":"2022-02-21 16:17:08.000000000","message":"this is a wrong sysfs dependency. We should instead extend the PciDevice object with the necessary data.","commit_id":"ad8186cff3aa0fdc539e2fc0f31748dcba7b6815"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"aa7b80a783296c545a6f6119b3ec1242372f8829","unresolved":false,"context_lines":[{"line_number":1634,"context_line":"                dev_profile.update("},{"line_number":1635,"context_line":"                    self._get_vf_pci_device_profile(pci_dev))"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"            if pci_dev.dev_type \u003d\u003d obj_fields.PciDeviceType.SRIOV_PF:"},{"line_number":1638,"context_line":"                # In general the MAC address information flows fom the neutron"},{"line_number":1639,"context_line":"                # port to the device in the backend. Except for direct-physical"},{"line_number":1640,"context_line":"                # ports. In that case the MAC address flows from the physical"},{"line_number":1641,"context_line":"                # device, the PF, to the neutron port. So when such a port is"},{"line_number":1642,"context_line":"                # being bound to a host the port\u0027s MAC address needs to be"},{"line_number":1643,"context_line":"                # updated. Nova needs to put the new MAC into the binding"},{"line_number":1644,"context_line":"                # profile."},{"line_number":1645,"context_line":"                dev_profile.update("},{"line_number":1646,"context_line":"                    self._get_pf_pci_device_profile(pci_dev))"},{"line_number":1647,"context_line":""},{"line_number":1648,"context_line":"            return dev_profile"},{"line_number":1649,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9e0281d0_aa90207b","line":1646,"range":{"start_line":1637,"start_character":0,"end_line":1646,"end_character":61},"in_reply_to":"15d02eea_519fe206","updated":"2022-03-03 07:25:08.000000000","message":"Done","commit_id":"ad8186cff3aa0fdc539e2fc0f31748dcba7b6815"},{"author":{"_account_id":15554,"name":"Bence Romsics","email":"bence.romsics@gmail.com","username":"ebenrom","status":"working for Ericsson, UTC+1 (+DST)"},"change_message_id":"95c1af71712b11a897bcc42bcf944bf93e6abb18","unresolved":true,"context_lines":[{"line_number":1632,"context_line":"                # updated. Nova needs to put the new MAC into the binding"},{"line_number":1633,"context_line":"                # profile."},{"line_number":1634,"context_line":"                if pci_dev.mac_address:"},{"line_number":1635,"context_line":"                    dev_profile[\u0027mac_address\u0027] \u003d pci_dev.mac_address"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"            return dev_profile"},{"line_number":1638,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"d8c1213f_223d5993","line":1635,"updated":"2022-03-07 12:23:09.000000000","message":"At this point I understand if you don\u0027t want to change the api part of this, however this field would be slightly better named like \u0027mac_address_request\u0027 - which may or may not take effect depending on the presence of the neutron side (likely a neutron api extension).","commit_id":"ce2ea4b4b5c5348b5eb7774b6d8d00f8715e0dc2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"5efa33fab59d14209805c8ca1e7ff76f5c542fc7","unresolved":false,"context_lines":[{"line_number":1632,"context_line":"                # updated. Nova needs to put the new MAC into the binding"},{"line_number":1633,"context_line":"                # profile."},{"line_number":1634,"context_line":"                if pci_dev.mac_address:"},{"line_number":1635,"context_line":"                    dev_profile[\u0027mac_address\u0027] \u003d pci_dev.mac_address"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"            return dev_profile"},{"line_number":1638,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"33cfc616_5ef3b793","line":1635,"in_reply_to":"8cecd6c7_02bd0b48","updated":"2022-03-23 12:44:18.000000000","message":"We agreed on device_mac_address with Bence","commit_id":"ce2ea4b4b5c5348b5eb7774b6d8d00f8715e0dc2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"c59f30541e3a66c22ecea3b4abb38fbb22a337e6","unresolved":true,"context_lines":[{"line_number":1632,"context_line":"                # updated. Nova needs to put the new MAC into the binding"},{"line_number":1633,"context_line":"                # profile."},{"line_number":1634,"context_line":"                if pci_dev.mac_address:"},{"line_number":1635,"context_line":"                    dev_profile[\u0027mac_address\u0027] \u003d pci_dev.mac_address"},{"line_number":1636,"context_line":""},{"line_number":1637,"context_line":"            return dev_profile"},{"line_number":1638,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"8cecd6c7_02bd0b48","line":1635,"in_reply_to":"d8c1213f_223d5993","updated":"2022-03-08 18:05:09.000000000","message":"No, these changes are still pretty open, especially due to the request from neutron team to add an api extension for it in neutron. So I happy to bikeshed around the naming. I\u0027m wondering if stating that this MAC is the MAC of the physical device / MAC of the device backing the port would also be useful. Also \"request\" only useful if the reader knows that this field is set by nova, so the requester is Nova. I\u0027m wondering how to encode all these information in not too long name.","commit_id":"ce2ea4b4b5c5348b5eb7774b6d8d00f8715e0dc2"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":684,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027,"},{"line_number":685,"context_line":"                                \u0027physical_network\u0027, \u0027card_serial_number\u0027,"},{"line_number":686,"context_line":"                                \u0027vf_num\u0027, \u0027pf_mac_address\u0027,"},{"line_number":687,"context_line":"                                \u0027device_mac_address\u0027):"},{"line_number":688,"context_line":"                if profile_key in port_profile:"},{"line_number":689,"context_line":"                    del port_profile[profile_key]"},{"line_number":690,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d port_profile"}],"source_content_type":"text/x-python","patch_set":6,"id":"1371752c_a72f7fe6","line":687,"updated":"2022-04-14 13:15:38.000000000","message":"ack cleaning on unbinding is required to ensure the PF can be reused by another port on the same neutron network to avoid mac conflicts.\n\n+1","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":684,"context_line":"                                constants.ALLOCATION, \u0027arq_uuid\u0027,"},{"line_number":685,"context_line":"                                \u0027physical_network\u0027, \u0027card_serial_number\u0027,"},{"line_number":686,"context_line":"                                \u0027vf_num\u0027, \u0027pf_mac_address\u0027,"},{"line_number":687,"context_line":"                                \u0027device_mac_address\u0027):"},{"line_number":688,"context_line":"                if profile_key in port_profile:"},{"line_number":689,"context_line":"                    del port_profile[profile_key]"},{"line_number":690,"context_line":"            port_req_body[\u0027port\u0027][constants.BINDING_PROFILE] \u003d port_profile"}],"source_content_type":"text/x-python","patch_set":6,"id":"4fd97c9f_866c15d3","line":687,"in_reply_to":"1371752c_a72f7fe6","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":1311,"context_line":"                # bug 1942329 is always present in the deployed neutron. The"},{"line_number":1312,"context_line":"                # _populate_neutron_extension_values() call above already"},{"line_number":1313,"context_line":"                # populated this MAC to the binding profile instead."},{"line_number":1314,"context_line":"                self._populate_pci_mac_address(instance,"},{"line_number":1315,"context_line":"                    request.pci_request_id, port_req_body)"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"                if created_port_id:"},{"line_number":1318,"context_line":"                    port_id \u003d created_port_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"970f6e6b_8a394469","line":1315,"range":{"start_line":1314,"start_character":11,"end_line":1315,"end_character":58},"updated":"2022-04-14 13:15:38.000000000","message":"ok so this is still using the pci utils to get the mac by querying sysfs which we want to avoid in the long term but ya i guess its safe to keep this for now and remove in Aardvark","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":1311,"context_line":"                # bug 1942329 is always present in the deployed neutron. The"},{"line_number":1312,"context_line":"                # _populate_neutron_extension_values() call above already"},{"line_number":1313,"context_line":"                # populated this MAC to the binding profile instead."},{"line_number":1314,"context_line":"                self._populate_pci_mac_address(instance,"},{"line_number":1315,"context_line":"                    request.pci_request_id, port_req_body)"},{"line_number":1316,"context_line":""},{"line_number":1317,"context_line":"                if created_port_id:"},{"line_number":1318,"context_line":"                    port_id \u003d created_port_id"}],"source_content_type":"text/x-python","patch_set":6,"id":"076629d9_5882e702","line":1315,"range":{"start_line":1314,"start_character":11,"end_line":1315,"end_character":58},"in_reply_to":"970f6e6b_8a394469","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":3753,"context_line":"                    pci_dev \u003d self._get_port_pci_dev(instance, p)"},{"line_number":3754,"context_line":"                    if pci_dev:"},{"line_number":3755,"context_line":"                        binding_profile.update("},{"line_number":3756,"context_line":"                            self._get_pci_device_profile(pci_dev))"},{"line_number":3757,"context_line":"                        updates[constants.BINDING_PROFILE] \u003d binding_profile"},{"line_number":3758,"context_line":""},{"line_number":3759,"context_line":"            # NOTE(gibi): during live migration the conductor already sets the"}],"source_content_type":"text/x-python","patch_set":9,"id":"f1b2a309_4be679b7","line":3756,"updated":"2022-06-13 15:18:57.000000000","message":"unrelated change but ok","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":3753,"context_line":"                    pci_dev \u003d self._get_port_pci_dev(instance, p)"},{"line_number":3754,"context_line":"                    if pci_dev:"},{"line_number":3755,"context_line":"                        binding_profile.update("},{"line_number":3756,"context_line":"                            self._get_pci_device_profile(pci_dev))"},{"line_number":3757,"context_line":"                        updates[constants.BINDING_PROFILE] \u003d binding_profile"},{"line_number":3758,"context_line":""},{"line_number":3759,"context_line":"            # NOTE(gibi): during live migration the conductor already sets the"}],"source_content_type":"text/x-python","patch_set":9,"id":"da47d8ca_e35e229f","line":3756,"in_reply_to":"f1b2a309_4be679b7","updated":"2022-06-13 15:50:58.000000000","message":"context is removed from _get_port_pci_dev the rest is a just re-flowing the formatting.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}],"nova/objects/pci_device.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":148,"context_line":"                    reason\u003d\u0027dev_type\u003d%s not supported in version %s\u0027 % ("},{"line_number":149,"context_line":"                        dev_type, target_version))"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def __repr__(self):"},{"line_number":152,"context_line":"        return ("},{"line_number":153,"context_line":"            f\u0027PciDevice(address\u003d{self.address}, \u0027"},{"line_number":154,"context_line":"            f\u0027compute_node_id\u003d{self.compute_node_id})\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"27f67be5_a5a2dc43","line":151,"updated":"2022-04-14 13:15:38.000000000","message":"+1 i have hacked in temp repers when debuging before so we proably shoudl actully have them in the class.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":148,"context_line":"                    reason\u003d\u0027dev_type\u003d%s not supported in version %s\u0027 % ("},{"line_number":149,"context_line":"                        dev_type, target_version))"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def __repr__(self):"},{"line_number":152,"context_line":"        return ("},{"line_number":153,"context_line":"            f\u0027PciDevice(address\u003d{self.address}, \u0027"},{"line_number":154,"context_line":"            f\u0027compute_node_id\u003d{self.compute_node_id})\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"c12dc5e2_23e165d9","line":151,"in_reply_to":"27f67be5_a5a2dc43","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"02318ecf6951850764866b67e3530039daaf409a","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        caps \u003d jsonutils.loads(caps_json)"},{"line_number":552,"context_line":"        return caps.get(\u0027sriov\u0027, {})"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    def mac_address(self):"},{"line_number":555,"context_line":"        \"\"\"The MAC address of the PF physical device or None if the device is"},{"line_number":556,"context_line":"        not a PF or if the MAC is not available."},{"line_number":557,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"98ea5ad6_9b3ed559","line":554,"updated":"2022-05-03 16:09:00.000000000","message":"I fsckd the last rebase and dropped the @property decorator. Hence the unit test failures. :/ Fixed now.","commit_id":"20a2c36e2978880f8521ebd3ff062033d6bab516"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":551,"context_line":"        caps \u003d jsonutils.loads(caps_json)"},{"line_number":552,"context_line":"        return caps.get(\u0027sriov\u0027, {})"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    @property"},{"line_number":555,"context_line":"    def mac_address(self):"},{"line_number":556,"context_line":"        \"\"\"The MAC address of the PF physical device or None if the device is"},{"line_number":557,"context_line":"        not a PF or if the MAC is not available."}],"source_content_type":"text/x-python","patch_set":9,"id":"545b4fbc_592ade0d","line":554,"updated":"2022-06-13 15:18:57.000000000","message":"this is a property, hence not requiring an object version bump.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        caps \u003d jsonutils.loads(caps_json)"},{"line_number":552,"context_line":"        return caps.get(\u0027sriov\u0027, {})"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"    @property"},{"line_number":555,"context_line":"    def mac_address(self):"},{"line_number":556,"context_line":"        \"\"\"The MAC address of the PF physical device or None if the device is"},{"line_number":557,"context_line":"        not a PF or if the MAC is not available."}],"source_content_type":"text/x-python","patch_set":9,"id":"bdf5fbe6_477e34fa","line":554,"in_reply_to":"545b4fbc_592ade0d","updated":"2022-06-13 15:50:58.000000000","message":"Ack","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}],"nova/tests/fixtures/libvirt.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    @property"},{"line_number":506,"context_line":"    def address(self):"},{"line_number":507,"context_line":"        return \"0000:%02x:%02x.%1x\" % (self.bus, self.slot, self.function)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"# TODO(stephenfin): Remove all of these HostFooDevicesInfo objects in favour of"}],"source_content_type":"text/x-python","patch_set":6,"id":"88d22f91_04b44cdf","line":507,"range":{"start_line":507,"start_character":16,"end_line":507,"end_character":20},"updated":"2022-04-14 13:15:38.000000000","message":"the domain is not necessarily all 0000\n\n\nalthough for the fixture i guess we are ok with that.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":"    @property"},{"line_number":506,"context_line":"    def address(self):"},{"line_number":507,"context_line":"        return \"0000:%02x:%02x.%1x\" % (self.bus, self.slot, self.function)"},{"line_number":508,"context_line":""},{"line_number":509,"context_line":""},{"line_number":510,"context_line":"# TODO(stephenfin): Remove all of these HostFooDevicesInfo objects in favour of"}],"source_content_type":"text/x-python","patch_set":6,"id":"bbefe2bc_d606ec92","line":507,"range":{"start_line":507,"start_character":16,"end_line":507,"end_character":20},"in_reply_to":"88d22f91_04b44cdf","updated":"2022-04-21 08:52:35.000000000","message":"Yeah. The fixture does not store domain information for pci device addresses hence the shortcut here.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"}],"nova/tests/functional/libvirt/base.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":42,"context_line":"        super(ServersTestBase, self).setUp()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.useFixture(nova_fixtures.LibvirtImageBackendFixture())"},{"line_number":45,"context_line":"        self.libvirt \u003d self.useFixture(nova_fixtures.LibvirtFixture())"},{"line_number":46,"context_line":"        self.useFixture(nova_fixtures.OSBrickFixture())"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":9,"id":"fef51ed1_15a73eb9","line":45,"range":{"start_line":45,"start_character":13,"end_line":45,"end_character":20},"updated":"2022-06-13 15:18:57.000000000","message":"just a bikeshed, I\u0027d have prefered fake_libvirt as the var name so code reviewers could remember when seeing self.fake_libvirt that it\u0027s fixture instead of the directly libvirt module but meh.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":42,"context_line":"        super(ServersTestBase, self).setUp()"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.useFixture(nova_fixtures.LibvirtImageBackendFixture())"},{"line_number":45,"context_line":"        self.libvirt \u003d self.useFixture(nova_fixtures.LibvirtFixture())"},{"line_number":46,"context_line":"        self.useFixture(nova_fixtures.OSBrickFixture())"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        self.useFixture(fixtures.MockPatch("}],"source_content_type":"text/x-python","patch_set":9,"id":"5de3d47f_b5664e46","line":45,"range":{"start_line":45,"start_character":13,"end_line":45,"end_character":20},"in_reply_to":"fef51ed1_15a73eb9","updated":"2022-06-13 15:50:58.000000000","message":"Ack","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}],"nova/tests/functional/libvirt/test_pci_sriov_servers.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":377,"context_line":"        # the config of the compute hosts also have one extra PCI PF devices"},{"line_number":378,"context_line":"        # without any VF children. But the two compute has different PCI PF"},{"line_number":379,"context_line":"        # addresses and MAC so that the test can observe the slot update as"},{"line_number":380,"context_line":"        # well as the MAC updated during migration and after revert."},{"line_number":381,"context_line":"        source_pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pfs\u003d1, num_vfs\u003d1)"},{"line_number":382,"context_line":"        # add an extra PF without VF to be used by direct-physical ports"},{"line_number":383,"context_line":"        source_pci_info.add_device("}],"source_content_type":"text/x-python","patch_set":6,"id":"f743ed32_eb7eacfd","line":380,"updated":"2022-04-14 13:15:38.000000000","message":"ack\n\nthis is now testing quite a lot but its all related so i think its ok to test both PF and VF ports at once.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":377,"context_line":"        # the config of the compute hosts also have one extra PCI PF devices"},{"line_number":378,"context_line":"        # without any VF children. But the two compute has different PCI PF"},{"line_number":379,"context_line":"        # addresses and MAC so that the test can observe the slot update as"},{"line_number":380,"context_line":"        # well as the MAC updated during migration and after revert."},{"line_number":381,"context_line":"        source_pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pfs\u003d1, num_vfs\u003d1)"},{"line_number":382,"context_line":"        # add an extra PF without VF to be used by direct-physical ports"},{"line_number":383,"context_line":"        source_pci_info.add_device("}],"source_content_type":"text/x-python","patch_set":6,"id":"fb7342b5_3769a5d6","line":380,"in_reply_to":"f743ed32_eb7eacfd","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":504,"context_line":"            \u0027b4:96:91:34:f4:bb\u0027,"},{"line_number":505,"context_line":"            source_pf_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027device_mac_address\u0027]"},{"line_number":506,"context_line":"        )"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        conn \u003d self.computes[\u0027dest\u0027].driver._host.get_connection()"},{"line_number":509,"context_line":"        vms \u003d [vm._def for vm in conn._vms.values()]"},{"line_number":510,"context_line":"        self.assertEqual(2, len(vms))"}],"source_content_type":"text/x-python","patch_set":6,"id":"d91f2685_e5c18e11","line":507,"updated":"2022-04-14 13:15:38.000000000","message":"+1\nthis effectivly asserts that the mac info is provide to neutron so that it can be updated on the destination once https://review.opendev.org/c/openstack/neutron/+/829247 is merged","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            \u0027b4:96:91:34:f4:bb\u0027,"},{"line_number":505,"context_line":"            source_pf_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027device_mac_address\u0027]"},{"line_number":506,"context_line":"        )"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        conn \u003d self.computes[\u0027dest\u0027].driver._host.get_connection()"},{"line_number":509,"context_line":"        vms \u003d [vm._def for vm in conn._vms.values()]"},{"line_number":510,"context_line":"        self.assertEqual(2, len(vms))"}],"source_content_type":"text/x-python","patch_set":6,"id":"8cc1d87d_d69f43f4","line":507,"in_reply_to":"d91f2685_e5c18e11","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8701e748dd6f162a267b54e8b6bb903ad881acca","unresolved":true,"context_lines":[{"line_number":548,"context_line":"        # without any VF children. But the two compute has different PCI PF"},{"line_number":549,"context_line":"        # addresses and MAC so that the test can observe the slot update as"},{"line_number":550,"context_line":"        # well as the MAC updated during migration and after revert."},{"line_number":551,"context_line":"        source_pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pfs\u003d1, num_vfs\u003d1)"},{"line_number":552,"context_line":"        # add an extra PF without VF to be used by direct-physical ports"},{"line_number":553,"context_line":"        source_pci_info.add_device("},{"line_number":554,"context_line":"            dev_type\u003d\u0027PF\u0027,"},{"line_number":555,"context_line":"            bus\u003d0x82,  # the HostPCIDevicesInfo use the 0x81 by default"},{"line_number":556,"context_line":"            slot\u003d0x0,"},{"line_number":557,"context_line":"            function\u003d0,"},{"line_number":558,"context_line":"            iommu_group\u003d42,"},{"line_number":559,"context_line":"            numa_node\u003d0,"},{"line_number":560,"context_line":"            vf_ratio\u003d0,"},{"line_number":561,"context_line":"            mac_address\u003d\u0027b4:96:91:34:f4:aa\u0027,"},{"line_number":562,"context_line":"        )"},{"line_number":563,"context_line":"        self.start_compute("},{"line_number":564,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":565,"context_line":"            pci_info\u003dsource_pci_info)"},{"line_number":566,"context_line":"        dest_pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pfs\u003d1, num_vfs\u003d2)"},{"line_number":567,"context_line":"        # add an extra PF without VF to be used by direct-physical ports"},{"line_number":568,"context_line":"        dest_pci_info.add_device("},{"line_number":569,"context_line":"            dev_type\u003d\u0027PF\u0027,"},{"line_number":570,"context_line":"            bus\u003d0x82,  # the HostPCIDevicesInfo use the 0x81 by default"},{"line_number":571,"context_line":"            slot\u003d0x6,  # make it different from the source host"},{"line_number":572,"context_line":"            function\u003d0,"},{"line_number":573,"context_line":"            iommu_group\u003d42,"},{"line_number":574,"context_line":"            numa_node\u003d0,"},{"line_number":575,"context_line":"            vf_ratio\u003d0,"},{"line_number":576,"context_line":"            mac_address\u003d\u0027b4:96:91:34:f4:bb\u0027,"},{"line_number":577,"context_line":"        )"},{"line_number":578,"context_line":"        self.start_compute("},{"line_number":579,"context_line":"            hostname\u003d\u0027dest\u0027,"},{"line_number":580,"context_line":"            pci_info\u003ddest_pci_info)"},{"line_number":581,"context_line":"        source_port \u003d self.neutron.create_port("},{"line_number":582,"context_line":"            {\u0027port\u0027: self.neutron.network_4_port_1})"},{"line_number":583,"context_line":"        source_pf_port \u003d self.neutron.create_port("}],"source_content_type":"text/x-python","patch_set":6,"id":"ccb7a3c8_1a403a2c","line":580,"range":{"start_line":551,"start_character":0,"end_line":580,"end_character":35},"updated":"2022-04-14 13:15:38.000000000","message":"ack\n\nso i think this is the same topogy as the previous test and the commnt before is basically the same.\n\nwe could consider pulling this out into a shared setup function but im ok with duplicating it for this test","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"4b4161cde42b7af6b759e545369aaa446a93da68","unresolved":false,"context_lines":[{"line_number":548,"context_line":"        # without any VF children. But the two compute has different PCI PF"},{"line_number":549,"context_line":"        # addresses and MAC so that the test can observe the slot update as"},{"line_number":550,"context_line":"        # well as the MAC updated during migration and after revert."},{"line_number":551,"context_line":"        source_pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pfs\u003d1, num_vfs\u003d1)"},{"line_number":552,"context_line":"        # add an extra PF without VF to be used by direct-physical ports"},{"line_number":553,"context_line":"        source_pci_info.add_device("},{"line_number":554,"context_line":"            dev_type\u003d\u0027PF\u0027,"},{"line_number":555,"context_line":"            bus\u003d0x82,  # the HostPCIDevicesInfo use the 0x81 by default"},{"line_number":556,"context_line":"            slot\u003d0x0,"},{"line_number":557,"context_line":"            function\u003d0,"},{"line_number":558,"context_line":"            iommu_group\u003d42,"},{"line_number":559,"context_line":"            numa_node\u003d0,"},{"line_number":560,"context_line":"            vf_ratio\u003d0,"},{"line_number":561,"context_line":"            mac_address\u003d\u0027b4:96:91:34:f4:aa\u0027,"},{"line_number":562,"context_line":"        )"},{"line_number":563,"context_line":"        self.start_compute("},{"line_number":564,"context_line":"            hostname\u003d\u0027source\u0027,"},{"line_number":565,"context_line":"            pci_info\u003dsource_pci_info)"},{"line_number":566,"context_line":"        dest_pci_info \u003d fakelibvirt.HostPCIDevicesInfo(num_pfs\u003d1, num_vfs\u003d2)"},{"line_number":567,"context_line":"        # add an extra PF without VF to be used by direct-physical ports"},{"line_number":568,"context_line":"        dest_pci_info.add_device("},{"line_number":569,"context_line":"            dev_type\u003d\u0027PF\u0027,"},{"line_number":570,"context_line":"            bus\u003d0x82,  # the HostPCIDevicesInfo use the 0x81 by default"},{"line_number":571,"context_line":"            slot\u003d0x6,  # make it different from the source host"},{"line_number":572,"context_line":"            function\u003d0,"},{"line_number":573,"context_line":"            iommu_group\u003d42,"},{"line_number":574,"context_line":"            numa_node\u003d0,"},{"line_number":575,"context_line":"            vf_ratio\u003d0,"},{"line_number":576,"context_line":"            mac_address\u003d\u0027b4:96:91:34:f4:bb\u0027,"},{"line_number":577,"context_line":"        )"},{"line_number":578,"context_line":"        self.start_compute("},{"line_number":579,"context_line":"            hostname\u003d\u0027dest\u0027,"},{"line_number":580,"context_line":"            pci_info\u003ddest_pci_info)"},{"line_number":581,"context_line":"        source_port \u003d self.neutron.create_port("},{"line_number":582,"context_line":"            {\u0027port\u0027: self.neutron.network_4_port_1})"},{"line_number":583,"context_line":"        source_pf_port \u003d self.neutron.create_port("}],"source_content_type":"text/x-python","patch_set":6,"id":"baa1ce85_1df5d0a1","line":580,"range":{"start_line":551,"start_character":0,"end_line":580,"end_character":35},"in_reply_to":"ccb7a3c8_1a403a2c","updated":"2022-04-21 08:52:35.000000000","message":"Ack","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d323e4d466e95ec165c2ae4021e6b7c709ab237","unresolved":true,"context_lines":[{"line_number":648,"context_line":"                        \u0027.migrate_disk_and_power_off\u0027, return_value\u003d\u0027{}\u0027):"},{"line_number":649,"context_line":"            self._migrate_server(source_server)"},{"line_number":650,"context_line":""},{"line_number":651,"context_line":"        # Refresh the ports again, keeping in mind the ports are now bound"},{"line_number":652,"context_line":"        # on the dest after migrating."},{"line_number":653,"context_line":"        source_port \u003d self.neutron.show_port(source_port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":654,"context_line":"        same_slot_port \u003d self.neutron.show_port(same_slot_port[\u0027port\u0027][\u0027id\u0027])"},{"line_number":655,"context_line":"        source_pf_port \u003d self.neutron.show_port(source_pf_port[\u0027port\u0027][\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"251dda57_dc4d8b70","line":652,"range":{"start_line":651,"start_character":35,"end_line":652,"end_character":38},"updated":"2022-04-21 12:41:00.000000000","message":"nit: assuming we have binding:host_id in the fixture ports you could actully assert this so we dont have to rememebr that 😊 but im ok with the comment\nit does help keep track of what is happening in the test.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d323e4d466e95ec165c2ae4021e6b7c709ab237","unresolved":true,"context_lines":[{"line_number":694,"context_line":"            \u0027b4:96:91:34:f4:aa\u0027,"},{"line_number":695,"context_line":"            source_pf_port[\u0027port\u0027][\u0027binding:profile\u0027][\u0027device_mac_address\u0027]"},{"line_number":696,"context_line":"        )"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    def test_evacuate_server_with_neutron(self):"},{"line_number":699,"context_line":"        def move_operation(source_server):"},{"line_number":700,"context_line":"            # Down the source compute to enable the evacuation"}],"source_content_type":"text/x-python","patch_set":6,"id":"9b98973a_3c9f3a43","line":697,"updated":"2022-04-21 12:41:00.000000000","message":"+1 thanks for expandign this to test revert.\n\nwe could also assert the pci slot for the VF prort which is the only thing i think is missing but i think over all im happy with this test case as it cover the PF usecase which is what you are trying to impove in this patch.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"}],"nova/tests/unit/compute/test_compute.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8d323e4d466e95ec165c2ae4021e6b7c709ab237","unresolved":true,"context_lines":[{"line_number":5711,"context_line":"        instance.new_flavor \u003d instance.flavor"},{"line_number":5712,"context_line":""},{"line_number":5713,"context_line":"        old_pci_devices \u003d objects.PciDeviceList("},{"line_number":5714,"context_line":"            objects\u003d[objects.PciDevice(vendor_id\u003d\u00271377\u0027,"},{"line_number":5715,"context_line":"                                       product_id\u003d\u00270047\u0027,"},{"line_number":5716,"context_line":"                                       address\u003d\u00270000:0a:00.1\u0027,"},{"line_number":5717,"context_line":"                                       request_id\u003duuids.req1,"},{"line_number":5718,"context_line":"                                       compute_node_id\u003d1)])"},{"line_number":5719,"context_line":""},{"line_number":5720,"context_line":"        new_pci_devices \u003d objects.PciDeviceList("},{"line_number":5721,"context_line":"            objects\u003d[objects.PciDevice(vendor_id\u003d\u00271377\u0027,"},{"line_number":5722,"context_line":"                                       product_id\u003d\u00270047\u0027,"},{"line_number":5723,"context_line":"                                       address\u003d\u00270000:0b:00.1\u0027,"},{"line_number":5724,"context_line":"                                       request_id\u003duuids.req2,"},{"line_number":5725,"context_line":"                                       compute_node_id\u003d2)])"},{"line_number":5726,"context_line":""},{"line_number":5727,"context_line":"        if expected_pci_addr \u003d\u003d old_pci_devices[0].address:"},{"line_number":5728,"context_line":"            expected_pci_device \u003d old_pci_devices[0]"}],"source_content_type":"text/x-python","patch_set":6,"id":"aec92ec9_71d4a34b","line":5725,"range":{"start_line":5714,"start_character":11,"end_line":5725,"end_character":59},"updated":"2022-04-21 12:41:00.000000000","message":"nit while you are here i woudl not be upset if you fixed the indentaion to use the haning indent style instead\n\ne.g.\n       old_pci_devices \u003d objects.PciDeviceList(\n            objects\u003d[objects.PciDevice(vendor_id\u003d\u00271377\u0027,\n                                       product_id\u003d\u00270047\u0027,\n                                       address\u003d\u00270000:0a:00.1\u0027,\n                                       request_id\u003duuids.req1,\n                                       compute_node_id\u003d1)])\n\nto\n       old_pci_devices \u003d objects.PciDeviceList(\n           objects\u003d[\n               objects.PciDevice(\n                   vendor_id\u003d\u00271377\u0027, product_id\u003d\u00270047\u0027,\n                   address\u003d\u00270000:0a:00.1\u0027, request_id\u003duuids.req1,\n                   compute_node_id\u003d1)])\nor\n       old_pci_devices \u003d objects.PciDeviceList(\n           objects\u003d[\n               objects.PciDevice(\n                   vendor_id\u003d\u00271377\u0027,\n                   product_id\u003d\u00270047\u0027,\n                   address\u003d\u00270000:0a:00.1\u0027,\n                   request_id\u003duuids.req1,\n                   compute_node_id\u003d1\n               )\n           ]\n       )\n\nthat said you dont need to refactor this i just think the alternitives are more readable i prefer the compact form but of the first alternitive but i think both are better the the current style.","commit_id":"edb3f7bafd36cbe6783ef648bbe42a9b7c0a48ca"}],"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":17597,"context_line":"                \"phys_function\": None,"},{"line_number":17598,"context_line":"                \"numa_node\": None,"},{"line_number":17599,"context_line":"                # value defined in the LibvirtFixture"},{"line_number":17600,"context_line":"                \"mac_address\": \"52:54:00:1e:59:c6\","},{"line_number":17601,"context_line":"            },"},{"line_number":17602,"context_line":"            {"},{"line_number":17603,"context_line":"                \"dev_id\": \"pci_0000_04_10_7\","}],"source_content_type":"text/x-python","patch_set":9,"id":"25c745f7_23f35ec1","line":17600,"updated":"2022-06-13 15:18:57.000000000","message":"nit : mmm, maybe we should have used directly the variable as a global one","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":17597,"context_line":"                \"phys_function\": None,"},{"line_number":17598,"context_line":"                \"numa_node\": None,"},{"line_number":17599,"context_line":"                # value defined in the LibvirtFixture"},{"line_number":17600,"context_line":"                \"mac_address\": \"52:54:00:1e:59:c6\","},{"line_number":17601,"context_line":"            },"},{"line_number":17602,"context_line":"            {"},{"line_number":17603,"context_line":"                \"dev_id\": \"pci_0000_04_10_7\","}],"source_content_type":"text/x-python","patch_set":9,"id":"19481f2f_e9d96127","line":17600,"in_reply_to":"25c745f7_23f35ec1","updated":"2022-06-13 15:50:58.000000000","message":"yeah, also the product_id / vendor_id is coming from the fixture too. So meh.","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}],"nova/tests/unit/virt/libvirt/test_host.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":1160,"context_line":"            dev for dev in node_devs.values() if dev.name() in devs]"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"        name \u003d \"pci_0000_04_00_3\""},{"line_number":1163,"context_line":"        actual_vf \u003d self.host._get_pcidev_info("},{"line_number":1164,"context_line":"            name, node_devs[name], net_devs, [], [])"},{"line_number":1165,"context_line":"        expect_vf \u003d {"},{"line_number":1166,"context_line":"            \"dev_id\": \"pci_0000_04_00_3\","}],"source_content_type":"text/x-python","patch_set":9,"id":"b7c41737_1b498556","side":"PARENT","line":1163,"range":{"start_line":1163,"start_character":8,"end_line":1163,"end_character":17},"updated":"2022-06-13 15:18:57.000000000","message":"heh, I guess an unfortunate copy/paste.","commit_id":"b8cc5704558d3c08fda9db2f1bb7fecb2bcd985d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"            dev for dev in node_devs.values() if dev.name() in devs]"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"        name \u003d \"pci_0000_04_00_3\""},{"line_number":1163,"context_line":"        actual_vf \u003d self.host._get_pcidev_info("},{"line_number":1164,"context_line":"            name, node_devs[name], net_devs, [], [])"},{"line_number":1165,"context_line":"        expect_vf \u003d {"},{"line_number":1166,"context_line":"            \"dev_id\": \"pci_0000_04_00_3\","}],"source_content_type":"text/x-python","patch_set":9,"id":"4e077408_543d2053","side":"PARENT","line":1163,"range":{"start_line":1163,"start_character":8,"end_line":1163,"end_character":17},"in_reply_to":"b7c41737_1b498556","updated":"2022-06-13 15:50:58.000000000","message":"yes the old naming was wrong based on the dev_type","commit_id":"b8cc5704558d3c08fda9db2f1bb7fecb2bcd985d"}],"nova/virt/libvirt/host.py":[{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":1274,"context_line":"        try:"},{"line_number":1275,"context_line":"            return {"},{"line_number":1276,"context_line":"                \u0027mac_address\u0027: pci_utils.get_mac_by_pci_address(pci_address)"},{"line_number":1277,"context_line":"            }"},{"line_number":1278,"context_line":"        except exception.PciDeviceNotFoundById:"},{"line_number":1279,"context_line":"            LOG.debug("},{"line_number":1280,"context_line":"                \u0027Cannot get MAC address of the PF %s. It is probably attached \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"b1705f13_254c5dff","line":1277,"updated":"2022-06-13 15:18:57.000000000","message":"any reasons why we need to return a dict with only one key/value, the key being the same ?","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"        try:"},{"line_number":1275,"context_line":"            return {"},{"line_number":1276,"context_line":"                \u0027mac_address\u0027: pci_utils.get_mac_by_pci_address(pci_address)"},{"line_number":1277,"context_line":"            }"},{"line_number":1278,"context_line":"        except exception.PciDeviceNotFoundById:"},{"line_number":1279,"context_line":"            LOG.debug("},{"line_number":1280,"context_line":"                \u0027Cannot get MAC address of the PF %s. It is probably attached \u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"ed09cac3_a5895002","line":1277,"in_reply_to":"b1705f13_254c5dff","updated":"2022-06-13 15:50:58.000000000","message":"It is now prepared to return more pf related details :)","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":7166,"name":"Sylvain Bauza","email":"sbauza@redhat.com","username":"sbauza"},"change_message_id":"66fdbb289c6dcfdac68dd1b4d9c4913e322dd511","unresolved":true,"context_lines":[{"line_number":1483,"context_line":"            _get_device_type(cfgdev, address, dev, net_devs, vdpa_devs))"},{"line_number":1484,"context_line":"        device.update(_get_device_capabilities(device, dev,"},{"line_number":1485,"context_line":"                                               pci_devs, net_devs))"},{"line_number":1486,"context_line":"        device.update(self._get_pf_details(device, address))"},{"line_number":1487,"context_line":"        return device"},{"line_number":1488,"context_line":""},{"line_number":1489,"context_line":"    def get_vdpa_nodedev_by_address("}],"source_content_type":"text/x-python","patch_set":9,"id":"a823eab3_de524680","line":1486,"updated":"2022-06-13 15:18:57.000000000","message":"well, then I understand the dict, but we could have made it differently for adding the attribute to the profile dict, right?","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"860a6c513b3f4ff011df774180e93174dde0fe68","unresolved":false,"context_lines":[{"line_number":1483,"context_line":"            _get_device_type(cfgdev, address, dev, net_devs, vdpa_devs))"},{"line_number":1484,"context_line":"        device.update(_get_device_capabilities(device, dev,"},{"line_number":1485,"context_line":"                                               pci_devs, net_devs))"},{"line_number":1486,"context_line":"        device.update(self._get_pf_details(device, address))"},{"line_number":1487,"context_line":"        return device"},{"line_number":1488,"context_line":""},{"line_number":1489,"context_line":"    def get_vdpa_nodedev_by_address("}],"source_content_type":"text/x-python","patch_set":9,"id":"d69b6e03_cdec5fe9","line":1486,"in_reply_to":"a823eab3_de524680","updated":"2022-06-13 15:50:58.000000000","message":"yeah this was a pattern to follow","commit_id":"cd03bbc1c33e33872594cf002f0e7011ab8ea047"}]}
