)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa0ed96ea9a855c30311d8bf665b8e4c9e1d4eeb","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  to accomodate the former."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I9a5118373548c525b2b1c2271e7d210cc92e4f4c"},{"line_number":26,"context_line":"Related-Bug: #1809095"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5fc1f717_fa19027a","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":12},"updated":"2019-04-01 11:24:20.000000000","message":"maybe this should be Partial-Bug:","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"a21699ad061abcf9225509a1cc00f213f7c0d2b1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  to accomodate the former."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I9a5118373548c525b2b1c2271e7d210cc92e4f4c"},{"line_number":26,"context_line":"Related-Bug: #1809095"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"5fc1f717_29f17496","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":12},"in_reply_to":"5fc1f717_fa19027a","updated":"2019-04-02 11:48:27.000000000","message":"Will modify, Still need to master those tags :)","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"01c1ca67d8c6cc45854be94499dff06f4c0fad3e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"e.g allow the proper VF representor to be unplugged"},{"line_number":13,"context_line":"from the integration bridge in case of a hardware offloaded OVS."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"To do so, some perliminary work is needed to allow code-sharing"},{"line_number":16,"context_line":"between nova.network.neutronv2 and nova.compute.manager"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This change:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_eeaddb31","line":15,"range":{"start_line":15,"start_character":15,"end_line":15,"end_character":26},"updated":"2019-05-16 20:46:53.000000000","message":"preliminary","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"934054eac7569d3c61580877009c605eae063d83","unresolved":false,"context_lines":[{"line_number":12,"context_line":"e.g allow the proper VF representor to be unplugged"},{"line_number":13,"context_line":"from the integration bridge in case of a hardware offloaded OVS."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"To do so, some perliminary work is needed to allow code-sharing"},{"line_number":16,"context_line":"between nova.network.neutronv2 and nova.compute.manager"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This change:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_30a2539c","line":15,"range":{"start_line":15,"start_character":15,"end_line":15,"end_character":26},"in_reply_to":"bfb3d3c7_eeaddb31","updated":"2019-05-19 08:46:37.000000000","message":"Done","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"01c1ca67d8c6cc45854be94499dff06f4c0fad3e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"between nova.network.neutronv2 and nova.compute.manager"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This change:"},{"line_number":19,"context_line":"- Moves common logic to retireve the PCI mapping between"},{"line_number":20,"context_line":"  the source and destination node from nova.network.neutronv2"},{"line_number":21,"context_line":"  to objects.migration_context."},{"line_number":22,"context_line":"- Makes code adjustments to methods in nova.network.neutronv2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_8eaa1f17","line":19,"range":{"start_line":19,"start_character":24,"end_line":19,"end_character":32},"updated":"2019-05-16 20:46:53.000000000","message":"retrieve","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"934054eac7569d3c61580877009c605eae063d83","unresolved":false,"context_lines":[{"line_number":16,"context_line":"between nova.network.neutronv2 and nova.compute.manager"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"This change:"},{"line_number":19,"context_line":"- Moves common logic to retireve the PCI mapping between"},{"line_number":20,"context_line":"  the source and destination node from nova.network.neutronv2"},{"line_number":21,"context_line":"  to objects.migration_context."},{"line_number":22,"context_line":"- Makes code adjustments to methods in nova.network.neutronv2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bfb3d3c7_509fc74f","line":19,"range":{"start_line":19,"start_character":24,"end_line":19,"end_character":32},"in_reply_to":"bfb3d3c7_8eaa1f17","updated":"2019-05-19 08:46:37.000000000","message":"Done","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"}],"nova/objects/migration_context.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa0ed96ea9a855c30311d8bf665b8e4c9e1d4eeb","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        return cls.obj_from_db_obj(db_extra[\u0027migration_context\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_pci_mapping_for_migration(self, mapping_for_revert\u003dFalse):"},{"line_number":88,"context_line":"        \"\"\"Get the mapping between the old PCI devices and the new PCI"},{"line_number":89,"context_line":"        devices that have been allocated during this migration.  The"},{"line_number":90,"context_line":"        correlation is based on PCI request ID which is unique per PCI"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_476abf1b","line":87,"range":{"start_line":87,"start_character":44,"end_line":87,"end_character":62},"updated":"2019-04-01 11:24:20.000000000","message":"nit: i would just call this revert also im not sure if it should be optional.","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"a21699ad061abcf9225509a1cc00f213f7c0d2b1","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        return cls.obj_from_db_obj(db_extra[\u0027migration_context\u0027])"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    def get_pci_mapping_for_migration(self, mapping_for_revert\u003dFalse):"},{"line_number":88,"context_line":"        \"\"\"Get the mapping between the old PCI devices and the new PCI"},{"line_number":89,"context_line":"        devices that have been allocated during this migration.  The"},{"line_number":90,"context_line":"        correlation is based on PCI request ID which is unique per PCI"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_696a1c1c","line":87,"range":{"start_line":87,"start_character":44,"end_line":87,"end_character":62},"in_reply_to":"5fc1f717_476abf1b","updated":"2019-04-02 11:48:27.000000000","message":"makes sense, ill rename \u0026 make it non-optional.","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa0ed96ea9a855c30311d8bf665b8e4c9e1d4eeb","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                  if mapping_for_revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        old_pci_devs, new_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                      self.new_pci_devices) if ("},{"line_number":103,"context_line":"            not mapping_for_revert) else (self.new_pci_devices,"},{"line_number":104,"context_line":"                                          self.old_pci_devices)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_bafcda0c","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":34},"updated":"2019-04-01 11:24:20.000000000","message":"im not sure if  old_pci_devs and new_pci_devs makes sense\nas the old_pci_dev will contain the new_pci_devices..\n\n\nperhaps current_pci_devs and updated_pci_devs would be a little less confusing.\n\nbut honestly the least confusing thing to do would be to have\nan if.\nif not self.old_pci_devices or not self.new_pci_devices:\n    return {}\nelif not revert:\n    return ...\nelse:\n    return ...","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"a21699ad061abcf9225509a1cc00f213f7c0d2b1","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                  if mapping_for_revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        old_pci_devs, new_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                      self.new_pci_devices) if ("},{"line_number":103,"context_line":"            not mapping_for_revert) else (self.new_pci_devices,"},{"line_number":104,"context_line":"                                          self.old_pci_devices)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_294df4c3","line":101,"range":{"start_line":101,"start_character":8,"end_line":101,"end_character":34},"in_reply_to":"5fc1f717_bafcda0c","updated":"2019-04-02 11:48:27.000000000","message":"will rename the variables,\nin regards to the logic, i wanted to keep it (roughly) the same as it was in neutronv2, to avoid introducing too much changes.","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"aa0ed96ea9a855c30311d8bf665b8e4c9e1d4eeb","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                  if mapping_for_revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        old_pci_devs, new_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                      self.new_pci_devices) if ("},{"line_number":103,"context_line":"            not mapping_for_revert) else (self.new_pci_devices,"},{"line_number":104,"context_line":"                                          self.old_pci_devices)"},{"line_number":105,"context_line":"        if old_pci_devs and new_pci_devs:"},{"line_number":106,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":107,"context_line":"                      \"context: old_pci_devs: %(old)s, \""}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_87ce672b","line":104,"range":{"start_line":101,"start_character":7,"end_line":104,"end_character":63},"updated":"2019-04-01 11:24:20.000000000","message":"technically this does the same as the old code.\n\nyou have introduced the mapping_for_revert variable and inverted the test which makes it harder to see you did not change the behavior but this does what it did previously.","commit_id":"1066cf47a292e089d62a556bada913847d0dbf03"},{"author":{"_account_id":23900,"name":"Uday T Kumar","email":"uday053@gmail.com","username":"uday.t.kumar"},"change_message_id":"764214683b21019acc75b7420896fc8826d4414d","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :param revert: If True, return a reverse mapping i.e"},{"line_number":94,"context_line":"               mapping between new PCI devices and old PCI devices."},{"line_number":95,"context_line":"        :returns: dictionary of PCI mapping."},{"line_number":96,"context_line":"                  if revert\u003d\u003dFalse:"},{"line_number":97,"context_line":"                      {\u0027\u003cold pci address\u003e\u0027: \u003cNew PciDevice\u003e}"},{"line_number":98,"context_line":"                  if revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                              self.new_pci_devices) if ("}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_22f6c964","line":99,"range":{"start_line":96,"start_character":18,"end_line":99,"end_character":60},"updated":"2019-05-16 14:41:40.000000000","message":"nit: Shouldn\u0027t the \u0027old pci\u0027 and \u0027new pci\u0027 also change to \u0027current\u0027 and \u0027updated\u0027respectively.","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d72c84eceb03f58bc2faf05085a6666a85740cc","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :param revert: If True, return a reverse mapping i.e"},{"line_number":94,"context_line":"               mapping between new PCI devices and old PCI devices."},{"line_number":95,"context_line":"        :returns: dictionary of PCI mapping."},{"line_number":96,"context_line":"                  if revert\u003d\u003dFalse:"},{"line_number":97,"context_line":"                      {\u0027\u003cold pci address\u003e\u0027: \u003cNew PciDevice\u003e}"},{"line_number":98,"context_line":"                  if revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                              self.new_pci_devices) if ("}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_a342ba0d","line":99,"range":{"start_line":96,"start_character":18,"end_line":99,"end_character":60},"in_reply_to":"dfbec78f_22f6c964","updated":"2019-05-16 17:44:09.000000000","message":"technically yes","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"934054eac7569d3c61580877009c605eae063d83","unresolved":false,"context_lines":[{"line_number":93,"context_line":"        :param revert: If True, return a reverse mapping i.e"},{"line_number":94,"context_line":"               mapping between new PCI devices and old PCI devices."},{"line_number":95,"context_line":"        :returns: dictionary of PCI mapping."},{"line_number":96,"context_line":"                  if revert\u003d\u003dFalse:"},{"line_number":97,"context_line":"                      {\u0027\u003cold pci address\u003e\u0027: \u003cNew PciDevice\u003e}"},{"line_number":98,"context_line":"                  if revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                              self.new_pci_devices) if ("}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_f01a7b15","line":99,"range":{"start_line":96,"start_character":18,"end_line":99,"end_character":60},"in_reply_to":"dfbec78f_a342ba0d","updated":"2019-05-19 08:46:37.000000000","message":"actually using \u0027current\u0027, \u0027updated\u0027 here will hinder clarity IMO as the intention is to correlate between the following migration context attributes:\n\u0027new_pci_devices\u0027 \u003c-\u003e \u0027old_pci_devices\u0027\n\ncurrent/updated is implementation details, So id prefer to keep it out of the docstring.","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"01c1ca67d8c6cc45854be94499dff06f4c0fad3e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                  if revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                              self.new_pci_devices) if ("},{"line_number":103,"context_line":"            not revert) else (self.new_pci_devices,"},{"line_number":104,"context_line":"                              self.old_pci_devices)"},{"line_number":105,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":106,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":107,"context_line":"                      \"context: old_pci_devs: %(old)s, \""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_2e3f73d7","line":104,"range":{"start_line":101,"start_character":0,"end_line":104,"end_character":51},"updated":"2019-05-16 20:46:53.000000000","message":"The formatting on this is pretty ugly. There are several ways to do it prettier. The simplest and most readable imo is\n\nIf you just hate the idea of blowing this out into an if/else and want to be clever:\n\n step \u003d -1 if revert else 1\n curdevs, upddevs \u003d (self.old_pci_devices, self.new_pci_devices)[::step]","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"934054eac7569d3c61580877009c605eae063d83","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                  if revert\u003d\u003dTrue:"},{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":102,"context_line":"                                              self.new_pci_devices) if ("},{"line_number":103,"context_line":"            not revert) else (self.new_pci_devices,"},{"line_number":104,"context_line":"                              self.old_pci_devices)"},{"line_number":105,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":106,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":107,"context_line":"                      \"context: old_pci_devs: %(old)s, \""}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_9088df1f","line":104,"range":{"start_line":101,"start_character":0,"end_line":104,"end_character":51},"in_reply_to":"bfb3d3c7_2e3f73d7","updated":"2019-05-19 08:46:37.000000000","message":"Done","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"6d72c84eceb03f58bc2faf05085a6666a85740cc","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                              self.old_pci_devices)"},{"line_number":105,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":106,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":107,"context_line":"                      \"context: old_pci_devs: %(old)s, \""},{"line_number":108,"context_line":"                      \"new_pci_devs: %(new)s\","},{"line_number":109,"context_line":"                      {\u0027old\u0027: [dev for dev in current_pci_devs],"},{"line_number":110,"context_line":"                       \u0027new\u0027: [dev for dev in updated_pci_devs]})"},{"line_number":111,"context_line":"            return {curr_dev.address: upd_dev"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_030146af","line":108,"range":{"start_line":107,"start_character":22,"end_line":108,"end_character":46},"updated":"2019-05-16 17:44:09.000000000","message":"technically this should be updated too but its a nit","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"934054eac7569d3c61580877009c605eae063d83","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                              self.old_pci_devices)"},{"line_number":105,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":106,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":107,"context_line":"                      \"context: old_pci_devs: %(old)s, \""},{"line_number":108,"context_line":"                      \"new_pci_devs: %(new)s\","},{"line_number":109,"context_line":"                      {\u0027old\u0027: [dev for dev in current_pci_devs],"},{"line_number":110,"context_line":"                       \u0027new\u0027: [dev for dev in updated_pci_devs]})"},{"line_number":111,"context_line":"            return {curr_dev.address: upd_dev"}],"source_content_type":"text/x-python","patch_set":4,"id":"bfb3d3c7_d093b74e","line":108,"range":{"start_line":107,"start_character":22,"end_line":108,"end_character":46},"in_reply_to":"dfbec78f_030146af","updated":"2019-05-19 08:46:37.000000000","message":"Done","commit_id":"0165b67b25c66d95d54c7d92b3c528edb1bed173"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"0d703611da67bdb3288cdbbc1607fd081be55306","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        step \u003d -1 if revert else 1"},{"line_number":102,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":103,"context_line":"                                              self.new_pci_devices)[::step]"},{"line_number":104,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":105,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":106,"context_line":"                      \"context: current_pci_devs: %(cur)s, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_a70b047b","line":103,"range":{"start_line":102,"start_character":45,"end_line":103,"end_character":75},"updated":"2019-05-24 11:44:03.000000000","message":"Clever","commit_id":"5a1c385b996090b80f5881680e04c88abc21828a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3a7c2ae84cd8439ab2a20b9ddb13565d095e9cb8","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        step \u003d -1 if revert else 1"},{"line_number":102,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":103,"context_line":"                                              self.new_pci_devices)[::step]"},{"line_number":104,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":105,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":106,"context_line":"                      \"context: current_pci_devs: %(cur)s, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_a8528511","line":103,"range":{"start_line":102,"start_character":45,"end_line":103,"end_character":75},"in_reply_to":"bfb3d3c7_19910548","updated":"2019-05-31 14:12:16.000000000","message":"I feel like this is something I\u0027d be asked to do in a job interview coding test and then fail and then say I wouldn\u0027t do it anyway because it makes the code unreadable.","commit_id":"5a1c385b996090b80f5881680e04c88abc21828a"},{"author":{"_account_id":28714,"name":"Adrian Chiris","email":"adrianc@nvidia.com","username":"adrianc"},"change_message_id":"810be7b6b70689ad292fd9350d8ceb5200bee400","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        step \u003d -1 if revert else 1"},{"line_number":102,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":103,"context_line":"                                              self.new_pci_devices)[::step]"},{"line_number":104,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":105,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":106,"context_line":"                      \"context: current_pci_devs: %(cur)s, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"bfb3d3c7_19910548","line":103,"range":{"start_line":102,"start_character":45,"end_line":103,"end_character":75},"in_reply_to":"bfb3d3c7_a70b047b","updated":"2019-05-26 08:13:31.000000000","message":"credits go to @efried","commit_id":"5a1c385b996090b80f5881680e04c88abc21828a"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"ba2cb3cea31ff42625376199d18679a3f85ad91d","unresolved":false,"context_lines":[{"line_number":99,"context_line":"                      {\u0027\u003cnew pci address\u003e\u0027: \u003cOld PciDevice\u003e}"},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        step \u003d -1 if revert else 1"},{"line_number":102,"context_line":"        current_pci_devs, updated_pci_devs \u003d (self.old_pci_devices,"},{"line_number":103,"context_line":"                                              self.new_pci_devices)[::step]"},{"line_number":104,"context_line":"        if current_pci_devs and updated_pci_devs:"},{"line_number":105,"context_line":"            LOG.debug(\"Determining PCI devices mapping using migration \""},{"line_number":106,"context_line":"                      \"context: current_pci_devs: %(cur)s, \""}],"source_content_type":"text/x-python","patch_set":5,"id":"9fb8cfa7_6767d227","line":103,"range":{"start_line":102,"start_character":45,"end_line":103,"end_character":75},"in_reply_to":"bfb3d3c7_a8528511","updated":"2019-05-31 16:20:07.000000000","message":"Killjoy.\n\nPlease note that I phrased my suggestion as an alternative to just doing a full and explicit if/else: https://review.opendev.org/#/c/643023/4/nova/objects/migration_context.py@104","commit_id":"5a1c385b996090b80f5881680e04c88abc21828a"}]}
