)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"04916066aa0f4167e982958d59edd4be3e112c87","unresolved":false,"context_lines":[{"line_number":13,"context_line":"- Add is_sriov_port property to InstancePCIRequest object"},{"line_number":14,"context_line":"  to avoid duplication of logic and comments in the code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Move class method create_skeleton_migrate_vifs from"},{"line_number":17,"context_line":"  LiveMigrateData object to VIFMigrateData object as"},{"line_number":18,"context_line":"  frankly its more sensible to have it there."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_7d9c8d0d","line":16,"range":{"start_line":16,"start_character":7,"end_line":16,"end_character":12},"updated":"2019-05-14 15:41:38.000000000","message":"static","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"8074c14455825be1e45b453e5111a149a9c92f89","unresolved":false,"context_lines":[{"line_number":13,"context_line":"- Add is_sriov_port property to InstancePCIRequest object"},{"line_number":14,"context_line":"  to avoid duplication of logic and comments in the code."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"- Move class method create_skeleton_migrate_vifs from"},{"line_number":17,"context_line":"  LiveMigrateData object to VIFMigrateData object as"},{"line_number":18,"context_line":"  frankly its more sensible to have it there."},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"dfbec78f_38de236d","line":16,"range":{"start_line":16,"start_character":7,"end_line":16,"end_character":12},"in_reply_to":"dfbec78f_7d9c8d0d","updated":"2019-05-14 16:27:45.000000000","message":"So, i guess my subconscious actually made sense here :P","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"}],"nova/conductor/tasks/live_migrate.py":[{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"04916066aa0f4167e982958d59edd4be3e112c87","unresolved":false,"context_lines":[{"line_number":226,"context_line":"            raise exception.MigrationPreCheckError("},{"line_number":227,"context_line":"                reason\u003d\"Cannot live migrate VIF with related PCI, Neutron \""},{"line_number":228,"context_line":"                       \"does not support required port binding extension.\")"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"        if not (supports_vif_related_pci_allocations(self.context,"},{"line_number":231,"context_line":"                                                     src_host) and"},{"line_number":232,"context_line":"                supports_vif_related_pci_allocations(self.context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_7d59ed8b","line":229,"updated":"2019-05-14 15:41:38.000000000","message":"that was a style nit, not accidental newline :)","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"144c3d7a9731c435deff514c57b5f8c4daf74516","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":370,"context_line":"                context\u003dself.context,"},{"line_number":371,"context_line":"                instance\u003dself.instance,"},{"line_number":372,"context_line":"                host\u003ddestination,"},{"line_number":373,"context_line":"                vnic_types\u003dNone,"},{"line_number":374,"context_line":"                port_profiles\u003dports_profile)"},{"line_number":375,"context_line":"        except exception.PortBindingFailed as e:"},{"line_number":376,"context_line":"            # Port binding failed for that host, try another one."},{"line_number":377,"context_line":"            raise exception.MigrationPreCheckError("}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_ac7734a0","line":374,"range":{"start_line":370,"start_character":14,"end_line":374,"end_character":44},"updated":"2019-05-14 17:10:07.000000000","message":"please dont format code like this.\nif you editor automatically refromats it pleses revert it.\n\nthis wastes a lot fo virtical space.\nusing the keyword arges directly is a good improvemnt but\nyou should reflow them with multiple keyword args on the same line","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2adef8fe863db41eed8cbe0a91008c7a87cda49d","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":370,"context_line":"                context\u003dself.context,"},{"line_number":371,"context_line":"                instance\u003dself.instance,"},{"line_number":372,"context_line":"                host\u003ddestination,"},{"line_number":373,"context_line":"                vnic_types\u003dNone,"},{"line_number":374,"context_line":"                port_profiles\u003dports_profile)"},{"line_number":375,"context_line":"        except exception.PortBindingFailed as e:"},{"line_number":376,"context_line":"            # Port binding failed for that host, try another one."},{"line_number":377,"context_line":"            raise exception.MigrationPreCheckError("}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_c2c4b1f7","line":374,"range":{"start_line":370,"start_character":14,"end_line":374,"end_character":44},"in_reply_to":"dfbec78f_ac7734a0","updated":"2019-05-14 19:26:19.000000000","message":"i see your point, will modify. while you may get away with it when having 2-3 arguments(there are some examples in the code), i guess 5 is too much for single line per arg.\n\nim not aware of a pep8 rule or a project specific rule outlining how to call a method across multiple lines. is there ?","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75e7d46142fe47e3ff3cb8edb4c4deb7eeb37f53","unresolved":false,"context_lines":[{"line_number":367,"context_line":"                                 for mig_vif in migrate_vifs_with_profile}"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"            bindings \u003d self.network_api.bind_ports_to_host("},{"line_number":370,"context_line":"                context\u003dself.context,"},{"line_number":371,"context_line":"                instance\u003dself.instance,"},{"line_number":372,"context_line":"                host\u003ddestination,"},{"line_number":373,"context_line":"                vnic_types\u003dNone,"},{"line_number":374,"context_line":"                port_profiles\u003dports_profile)"},{"line_number":375,"context_line":"        except exception.PortBindingFailed as e:"},{"line_number":376,"context_line":"            # Port binding failed for that host, try another one."},{"line_number":377,"context_line":"            raise exception.MigrationPreCheckError("}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_b1bea9b1","line":374,"range":{"start_line":370,"start_character":14,"end_line":374,"end_character":44},"in_reply_to":"dfbec78f_c2c4b1f7","updated":"2019-05-15 01:55:13.000000000","message":"the current code is pep8 compliant as is\n\nbindings \u003d self.network_api.bind_ports_to_host(\n    context\u003dself.context, instance\u003dself.instance,\n    host\u003ddestination, vnic_types\u003dNone,\n    port_profiles\u003dports_profile)\n\nwe do not have a hacking check for this but i think it would improve readability if we did.","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"}],"nova/objects/instance_pci_requests.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"144c3d7a9731c435deff514c57b5f8c4daf74516","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @property"},{"line_number":44,"context_line":"    def is_sriov_port(self):"},{"line_number":45,"context_line":"        # PCI requests come from two sources: instance flavor and"},{"line_number":46,"context_line":"        # SR-IOV ports. SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":47,"context_line":"        return self.alias_name is None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_8c3d90de","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":38},"updated":"2019-05-14 17:10:07.000000000","message":"this might break when we integrate with cyborg\nas that might eb a thrid vector for pci requtests\nthat said its still unclea if the pci device info retruned form the arq would be transformed in to a pci_request object of if we would jsut use the pci info it containts to directly generate the xml so this might be fine.\n\nmaybe we woudl be better off to invert the logic and have\na is_flavor_request property or has_alias property e.g.\n\ndef is_flavor_requst(self):\n    retrun self.alias_name is not None\n\n\nthe other reason i dislike is_sriov_port is that we use sriov pass though of virtual function via alaise for things like qat but it can hand has been used in the past for nics that are connected to non openstack networks\n\nin both case but espaically the later is_sriov_port is confusing","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"dae18ca01e218be41cec7dae4ba9bfe71098905f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @property"},{"line_number":44,"context_line":"    def is_sriov_port(self):"},{"line_number":45,"context_line":"        # PCI requests come from two sources: instance flavor and"},{"line_number":46,"context_line":"        # SR-IOV ports. SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":47,"context_line":"        return self.alias_name is None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_e25bd1f2","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":38},"in_reply_to":"dfbec78f_277cb6ea","updated":"2019-05-16 14:18:27.000000000","message":"yes that would work but the reaosn i suggested \nis_flavor_requst was you cannot request pci deviees via the image\n\nit can only be done via flavor alias or the neutron port\n\nbut yes i think source makes sense too.","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75e7d46142fe47e3ff3cb8edb4c4deb7eeb37f53","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @property"},{"line_number":44,"context_line":"    def is_sriov_port(self):"},{"line_number":45,"context_line":"        # PCI requests come from two sources: instance flavor and"},{"line_number":46,"context_line":"        # SR-IOV ports. SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":47,"context_line":"        return self.alias_name is None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_b190e94b","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":38},"in_reply_to":"dfbec78f_629ce50d","updated":"2019-05-15 01:55:13.000000000","message":"centralising it does but you also chose to name it when you did this clean up and is_sirov_port is less helpful then \nis_flavor_request when the alsias can be used to passthough a sriov nic too.\n\nthe cyborg case i think can be dealt with later but i would still prefer to invert this and have\n\ndef is_flavor_requst(self):\n    retrun self.alias_name is not None\n\nand invert the logic in the call sites.\n\nin the cleanup you only use this twice.\n\nin once case you do \"if not pci_request.is_sriov_port:\"\n\nand the other you do \"if pci_request.is_sriov_port:\"\n\nso cahnge this to \"if pci_request.is_flavor_request:\"\nand \"if not pci_request.is_flavor_request:\" is just as clean and also does not have issue with non neutron sriov nic.","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2adef8fe863db41eed8cbe0a91008c7a87cda49d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @property"},{"line_number":44,"context_line":"    def is_sriov_port(self):"},{"line_number":45,"context_line":"        # PCI requests come from two sources: instance flavor and"},{"line_number":46,"context_line":"        # SR-IOV ports. SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":47,"context_line":"        return self.alias_name is None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_629ce50d","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":38},"in_reply_to":"dfbec78f_8c3d90de","updated":"2019-05-14 19:26:19.000000000","message":"i merely moved the check to a common place instead of having this test in several places.\n\ncyborg integration IMO is a future problem. modifications ,if needed, shall need to be addressed when it actually happens.\n\nanyway, having the check in a single place actually reduces the change that will be required for when cyborg is integrated with nova doesn\u0027t it ?\n\ni personally think that for where we use of this property (to differentiate between pci request for a network port and \"other\" pci request) it actually makes things clearer.","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"83ffd8ec18371d2d47ddf91a0db5368bc76a2ddb","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    }"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    @property"},{"line_number":44,"context_line":"    def is_sriov_port(self):"},{"line_number":45,"context_line":"        # PCI requests come from two sources: instance flavor and"},{"line_number":46,"context_line":"        # SR-IOV ports. SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":47,"context_line":"        return self.alias_name is None"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":50,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_277cb6ea","line":47,"range":{"start_line":44,"start_character":4,"end_line":47,"end_character":38},"in_reply_to":"dfbec78f_b190e94b","updated":"2019-05-15 08:45:48.000000000","message":"my intent was to express that the request relates to an SRIOV neutron port (maybe i should have named it is_sriov_neutron_port).\n\nI think what we really want is to know the source of the PCI request, whether it originated from flavor, neutron port or (in the future) cyborg arq.\n\nhow about:\n\n@property\ndef source(self):\n    return (SOURCE_IMAGE_FLAVOR, SOURCE_NEUTRON_PORT)[self.alias_name is None]\n\nSOURCE_IMAGE_FLAVOR and SOURCE_NEUTRON_PORT being class attributes\n\nimplementation can be improved later by adding self._source attribute, populating it during PCI request creation.\n(as this is saved in DB, will require support to move from old/new object version).\n\nthoughts?","commit_id":"8b5a0c8290a573260ecac8e86766e5563460da2f"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ac0ee2d7b1b422d42c64ac46389b4b07c77eb38","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # PCI requests originate from two sources: instance flavor alias and"},{"line_number":52,"context_line":"        # neutron SR-IOV ports."},{"line_number":53,"context_line":"        # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":54,"context_line":"        return (InstancePCIRequest.FLAVOR_ALIAS,"},{"line_number":55,"context_line":"                InstancePCIRequest.NEUTRON_PORT)[self.alias_name is None]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":58,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_11766071","line":55,"range":{"start_line":54,"start_character":0,"end_line":55,"end_character":73},"updated":"2019-05-31 10:56:06.000000000","message":"I have never seen this before. The more you know.","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"6324dfe86b6224415cf1f7bce6b3df53a736ad09","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # PCI requests originate from two sources: instance flavor alias and"},{"line_number":52,"context_line":"        # neutron SR-IOV ports."},{"line_number":53,"context_line":"        # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":54,"context_line":"        return (InstancePCIRequest.FLAVOR_ALIAS,"},{"line_number":55,"context_line":"                InstancePCIRequest.NEUTRON_PORT)[self.alias_name is None]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":58,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_509282fe","line":55,"range":{"start_line":54,"start_character":0,"end_line":55,"end_character":73},"in_reply_to":"9fb8cfa7_09ae202e","updated":"2019-07-02 16:45:13.000000000","message":"This is pretty convoluted. I would prefer\n\n return (InstancePCIRequest.NEUTRON_PORT if self.alias_name is None\n         else InstancePCIRequest.FLAVOR_ALIAS)","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81f9bd36946f09a59d7ccb613699a2b1e049cd72","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # PCI requests originate from two sources: instance flavor alias and"},{"line_number":52,"context_line":"        # neutron SR-IOV ports."},{"line_number":53,"context_line":"        # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":54,"context_line":"        return (InstancePCIRequest.FLAVOR_ALIAS,"},{"line_number":55,"context_line":"                InstancePCIRequest.NEUTRON_PORT)[self.alias_name is None]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":58,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_819d0ebd","line":55,"range":{"start_line":54,"start_character":0,"end_line":55,"end_character":73},"in_reply_to":"9fb8cfa7_509282fe","updated":"2019-07-02 18:54:06.000000000","message":"Done","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"488387e283347b7e9ba136e6cce1c7a8d09bff31","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        # PCI requests originate from two sources: instance flavor alias and"},{"line_number":52,"context_line":"        # neutron SR-IOV ports."},{"line_number":53,"context_line":"        # SR-IOV ports pci_request don\u0027t have an alias_name."},{"line_number":54,"context_line":"        return (InstancePCIRequest.FLAVOR_ALIAS,"},{"line_number":55,"context_line":"                InstancePCIRequest.NEUTRON_PORT)[self.alias_name is None]"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def obj_load_attr(self, attr):"},{"line_number":58,"context_line":"        setattr(self, attr, None)"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_09ae202e","line":55,"range":{"start_line":54,"start_character":0,"end_line":55,"end_character":73},"in_reply_to":"bfb3d3c7_11766071","updated":"2019-06-02 07:17:28.000000000","message":"Originally the plan was to add an \u0027is_sriov_port\u0027 property, however, after a discussion on the patch with sean-k-mooney, its possible to request a network SR-IOV device as image flavour alias (pci_passthroug:alias).\nSo, i eventually decided to go with a \u0027source\u0027 property which will express the source of the PCI request.\n\nthis can later be extended to other sources if needed (e.g cyborg)","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"}],"nova/objects/migrate_data.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ff849394fc8b7ef26ac754458ae37fbe222ce93","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        vif[\u0027details\u0027] \u003d self.vif_details"},{"line_number":95,"context_line":"        return vif"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @staticmethod"},{"line_number":98,"context_line":"    def create_skeleton_migrate_vifs(vifs):"},{"line_number":99,"context_line":"        \"\"\"Create migrate vifs for live migration."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :param vifs: a list of VIFs."}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_bdbf655f","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":43},"updated":"2019-05-14 15:42:55.000000000","message":"nit: this could be a @classmethod...","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"8074c14455825be1e45b453e5111a149a9c92f89","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        vif[\u0027details\u0027] \u003d self.vif_details"},{"line_number":95,"context_line":"        return vif"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @staticmethod"},{"line_number":98,"context_line":"    def create_skeleton_migrate_vifs(vifs):"},{"line_number":99,"context_line":"        \"\"\"Create migrate vifs for live migration."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :param vifs: a list of VIFs."}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_18e1df2a","line":98,"range":{"start_line":97,"start_character":0,"end_line":98,"end_character":43},"in_reply_to":"dfbec78f_bdbf655f","updated":"2019-05-14 16:27:45.000000000","message":"Done","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"3ff849394fc8b7ef26ac754458ae37fbe222ce93","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        vif_mig_data \u003d []"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        for vif in vifs:"},{"line_number":108,"context_line":"            mig_vif \u003d VIFMigrateData("},{"line_number":109,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":110,"context_line":"                source_vif\u003dvif)"},{"line_number":111,"context_line":"            vif_mig_data.append(mig_vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_ddc499f7","line":108,"range":{"start_line":108,"start_character":22,"end_line":108,"end_character":36},"updated":"2019-05-14 15:42:55.000000000","message":"meaning you could use \u0027cls\u0027 here instead","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"8074c14455825be1e45b453e5111a149a9c92f89","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        vif_mig_data \u003d []"},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        for vif in vifs:"},{"line_number":108,"context_line":"            mig_vif \u003d VIFMigrateData("},{"line_number":109,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":110,"context_line":"                source_vif\u003dvif)"},{"line_number":111,"context_line":"            vif_mig_data.append(mig_vif)"}],"source_content_type":"text/x-python","patch_set":1,"id":"dfbec78f_58c43791","line":108,"range":{"start_line":108,"start_character":22,"end_line":108,"end_character":36},"in_reply_to":"dfbec78f_ddc499f7","updated":"2019-05-14 16:27:45.000000000","message":"Done","commit_id":"870e2164c48eb34c87c954892a7e0a5aa7ea2407"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ac0ee2d7b1b422d42c64ac46389b4b07c77eb38","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        for vif in vifs:"},{"line_number":108,"context_line":"            mig_vif \u003d cls("},{"line_number":109,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":110,"context_line":"                source_vif\u003dvif)"},{"line_number":111,"context_line":"            vif_mig_data.append(mig_vif)"},{"line_number":112,"context_line":"        return vif_mig_data"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_d16be881","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":31},"updated":"2019-05-31 10:56:06.000000000","message":"nit: these can fit on one line, though I realize this a straight copy-paste","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81f9bd36946f09a59d7ccb613699a2b1e049cd72","unresolved":false,"context_lines":[{"line_number":106,"context_line":""},{"line_number":107,"context_line":"        for vif in vifs:"},{"line_number":108,"context_line":"            mig_vif \u003d cls("},{"line_number":109,"context_line":"                port_id\u003dvif[\u0027id\u0027],"},{"line_number":110,"context_line":"                source_vif\u003dvif)"},{"line_number":111,"context_line":"            vif_mig_data.append(mig_vif)"},{"line_number":112,"context_line":"        return vif_mig_data"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_962b1294","line":110,"range":{"start_line":109,"start_character":0,"end_line":110,"end_character":31},"in_reply_to":"bfb3d3c7_d16be881","updated":"2019-07-02 18:54:06.000000000","message":"Done","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"}],"nova/tests/unit/objects/test_instance_pci_requests.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9ac0ee2d7b1b422d42c64ac46389b4b07c77eb38","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        self.assertEqual(neutron_port_pci_req.source,"},{"line_number":198,"context_line":"                         objects.InstancePCIRequest.NEUTRON_PORT)"},{"line_number":199,"context_line":"        self.assertEqual(flavor_alias_pci_req.source,"},{"line_number":200,"context_line":"                        objects.InstancePCIRequest.FLAVOR_ALIAS)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class TestInstancePCIRequests(test_objects._LocalTest,"}],"source_content_type":"text/x-python","patch_set":3,"id":"bfb3d3c7_b10af4ce","line":200,"updated":"2019-05-31 10:56:06.000000000","message":"nit: alignment off by one","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"81f9bd36946f09a59d7ccb613699a2b1e049cd72","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        self.assertEqual(neutron_port_pci_req.source,"},{"line_number":198,"context_line":"                         objects.InstancePCIRequest.NEUTRON_PORT)"},{"line_number":199,"context_line":"        self.assertEqual(flavor_alias_pci_req.source,"},{"line_number":200,"context_line":"                        objects.InstancePCIRequest.FLAVOR_ALIAS)"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"class TestInstancePCIRequests(test_objects._LocalTest,"}],"source_content_type":"text/x-python","patch_set":3,"id":"9fb8cfa7_f607ee1c","line":200,"in_reply_to":"bfb3d3c7_b10af4ce","updated":"2019-07-02 18:54:06.000000000","message":"Done","commit_id":"19e43eaa5dacf424affc8f75020a14ddc7c971eb"}],"nova/tests/unit/objects/test_migrate_data.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"144c3d7a9731c435deff514c57b5f8c4daf74516","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class TestLiveMigrateData(test_objects._LocalTest,"},{"line_number":46,"context_line":"                          _TestLiveMigrateData):"},{"line_number":47,"context_line":"    def test_create_skeleton_migrate_vifs(self):"},{"line_number":48,"context_line":"        vifs \u003d ["},{"line_number":49,"context_line":"            network_model.VIF(id\u003duuids.port1),"},{"line_number":50,"context_line":"            network_model.VIF(id\u003duuids.port2)]"},{"line_number":51,"context_line":"        mig_vifs \u003d migrate_data.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":52,"context_line":"            vifs)"},{"line_number":53,"context_line":"        self.assertEqual(len(vifs), len(mig_vifs))"},{"line_number":54,"context_line":"        self.assertEqual([vif[\u0027id\u0027] for vif in vifs],"},{"line_number":55,"context_line":"                         [mig_vif.port_id for mig_vif in mig_vifs])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class TestRemoteLiveMigrateData(test_objects._RemoteTest,"},{"line_number":59,"context_line":"                                _TestLiveMigrateData):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_6cb5bc7d","side":"PARENT","line":56,"range":{"start_line":47,"start_character":5,"end_line":56,"end_character":0},"updated":"2019-05-14 17:10:07.000000000","message":"the vif objefct is stored in the LiveMigrationData class and\nthe conductor populated this regardless of the virt dirver used so this was correct before.","commit_id":"3de296389a9d967bdca94d4a39e69b6158a4822b"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"2adef8fe863db41eed8cbe0a91008c7a87cda49d","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class TestLiveMigrateData(test_objects._LocalTest,"},{"line_number":46,"context_line":"                          _TestLiveMigrateData):"},{"line_number":47,"context_line":"    def test_create_skeleton_migrate_vifs(self):"},{"line_number":48,"context_line":"        vifs \u003d ["},{"line_number":49,"context_line":"            network_model.VIF(id\u003duuids.port1),"},{"line_number":50,"context_line":"            network_model.VIF(id\u003duuids.port2)]"},{"line_number":51,"context_line":"        mig_vifs \u003d migrate_data.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":52,"context_line":"            vifs)"},{"line_number":53,"context_line":"        self.assertEqual(len(vifs), len(mig_vifs))"},{"line_number":54,"context_line":"        self.assertEqual([vif[\u0027id\u0027] for vif in vifs],"},{"line_number":55,"context_line":"                         [mig_vif.port_id for mig_vif in mig_vifs])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class TestRemoteLiveMigrateData(test_objects._RemoteTest,"},{"line_number":59,"context_line":"                                _TestLiveMigrateData):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_c2f6f163","side":"PARENT","line":56,"range":{"start_line":47,"start_character":5,"end_line":56,"end_character":0},"in_reply_to":"dfbec78f_6cb5bc7d","updated":"2019-05-14 19:26:19.000000000","message":"I moved create_skeleton_migrate_vifs from LiveMigrateData to VIFMigrateData, since its now a class method in VIFMigrateData, it should be unit tested as part of that object. what am i missing ?\n\nnote that the test is moved to: TestVIFMigrateData\nwhich is not virt driver specific.","commit_id":"3de296389a9d967bdca94d4a39e69b6158a4822b"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"75e7d46142fe47e3ff3cb8edb4c4deb7eeb37f53","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class TestLiveMigrateData(test_objects._LocalTest,"},{"line_number":46,"context_line":"                          _TestLiveMigrateData):"},{"line_number":47,"context_line":"    def test_create_skeleton_migrate_vifs(self):"},{"line_number":48,"context_line":"        vifs \u003d ["},{"line_number":49,"context_line":"            network_model.VIF(id\u003duuids.port1),"},{"line_number":50,"context_line":"            network_model.VIF(id\u003duuids.port2)]"},{"line_number":51,"context_line":"        mig_vifs \u003d migrate_data.LiveMigrateData.create_skeleton_migrate_vifs("},{"line_number":52,"context_line":"            vifs)"},{"line_number":53,"context_line":"        self.assertEqual(len(vifs), len(mig_vifs))"},{"line_number":54,"context_line":"        self.assertEqual([vif[\u0027id\u0027] for vif in vifs],"},{"line_number":55,"context_line":"                         [mig_vif.port_id for mig_vif in mig_vifs])"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"class TestRemoteLiveMigrateData(test_objects._RemoteTest,"},{"line_number":59,"context_line":"                                _TestLiveMigrateData):"}],"source_content_type":"text/x-python","patch_set":2,"id":"dfbec78f_71ad9199","side":"PARENT","line":56,"range":{"start_line":47,"start_character":5,"end_line":56,"end_character":0},"in_reply_to":"dfbec78f_c2f6f163","updated":"2019-05-15 01:55:13.000000000","message":"ah looking at it again you are puting it in TestVIFMigrateData. the way gerrit renders this it looked like you were moving it to _TestLibvirtLiveMigrateData\n\nin that case this is fine","commit_id":"3de296389a9d967bdca94d4a39e69b6158a4822b"}]}
