)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"782781bd5757c00b7bfa39828e07125a9851bb12","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: PowerVM Driver: SEA"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This adds SEA VIF support for the PowerVM nova driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8baa33470bf20e9beedb7fe266f800d68e96c0ea"},{"line_number":12,"context_line":"Partially-Implements: blueprint powervm-nova-it-compute-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ff82abbf_dc5ea511","line":9,"range":{"start_line":9,"start_character":10,"end_line":9,"end_character":13},"updated":"2017-11-30 15:39:25.000000000","message":"let\u0027s spell out Shared Ethernet Adapter","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"782781bd5757c00b7bfa39828e07125a9851bb12","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: PowerVM Driver: SEA"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This adds SEA VIF support for the PowerVM nova driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8baa33470bf20e9beedb7fe266f800d68e96c0ea"},{"line_number":12,"context_line":"Partially-Implements: blueprint powervm-nova-it-compute-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"ff82abbf_3ca31103","line":9,"range":{"start_line":9,"start_character":42,"end_line":9,"end_character":46},"updated":"2017-11-30 15:39:25.000000000","message":"s/nova/virt/","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"37492361e19c87cdfa6140821eeb1ddcac7bd248","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: PowerVM Driver: SEA"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This adds SEA VIF support for the PowerVM nova driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8baa33470bf20e9beedb7fe266f800d68e96c0ea"},{"line_number":12,"context_line":"Partially-Implements: blueprint powervm-nova-it-compute-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_0291c399","line":9,"range":{"start_line":9,"start_character":42,"end_line":9,"end_character":46},"in_reply_to":"ff82abbf_3ca31103","updated":"2017-12-15 02:41:00.000000000","message":"Done","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"37492361e19c87cdfa6140821eeb1ddcac7bd248","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"WIP: PowerVM Driver: SEA"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This adds SEA VIF support for the PowerVM nova driver."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: I8baa33470bf20e9beedb7fe266f800d68e96c0ea"},{"line_number":12,"context_line":"Partially-Implements: blueprint powervm-nova-it-compute-driver"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"df87a7cf_228c077e","line":9,"range":{"start_line":9,"start_character":10,"end_line":9,"end_character":13},"in_reply_to":"ff82abbf_dc5ea511","updated":"2017-12-15 02:41:00.000000000","message":"Done","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"}],"nova/tests/unit/virt/powervm/test_vif.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"35f95a8d429339997dfadf235a4c8ccfe414dfea","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        self.drv.unplug({\u0027address\u0027: \u0027aa:bb:cc:dd:ee:22\u0027})"},{"line_number":349,"context_line":"        self.drv.unplug({\u0027address\u0027: \u0027aa:bb:cc:dd:ee:33\u0027})"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # The delete should have only been called once.  The second CNA didn\u0027t"},{"line_number":352,"context_line":"        # have a matching mac...so it should be skipped."},{"line_number":353,"context_line":"        self.assertEqual(1, cnas[0].delete.call_count)"},{"line_number":354,"context_line":"        self.assertEqual(0, cnas[1].delete.call_count)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_1a57765a","line":351,"range":{"start_line":351,"start_character":50,"end_line":351,"end_character":54},"updated":"2018-01-09 16:53:58.000000000","message":"twice?  Or once for each applicable CNA?","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"140ca662ef466d64c65bb01790d77e03c638f20c","unresolved":false,"context_lines":[{"line_number":348,"context_line":"        self.drv.unplug({\u0027address\u0027: \u0027aa:bb:cc:dd:ee:22\u0027})"},{"line_number":349,"context_line":"        self.drv.unplug({\u0027address\u0027: \u0027aa:bb:cc:dd:ee:33\u0027})"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        # The delete should have only been called once.  The second CNA didn\u0027t"},{"line_number":352,"context_line":"        # have a matching mac...so it should be skipped."},{"line_number":353,"context_line":"        self.assertEqual(1, cnas[0].delete.call_count)"},{"line_number":354,"context_line":"        self.assertEqual(0, cnas[1].delete.call_count)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_fcf0d769","line":351,"range":{"start_line":351,"start_character":50,"end_line":351,"end_character":54},"in_reply_to":"9f91af0f_1a57765a","updated":"2018-01-15 18:47:44.000000000","message":"Done","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"}],"nova/virt/powervm/vif.py":[{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"782781bd5757c00b7bfa39828e07125a9851bb12","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":"    if vif.get(\u0027type\u0027) is None:"},{"line_number":70,"context_line":"        raise exception.VirtualInterfacePlugException("},{"line_number":71,"context_line":"            _(\"vif_type parameter must be present for this vif_driver \""},{"line_number":72,"context_line":"              \"implementation\"))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Check the type to the implementations"},{"line_number":75,"context_line":"    if VIF_MAPPING.get(vif[\u0027type\u0027]):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_ec4f3432","line":72,"range":{"start_line":71,"start_character":15,"end_line":72,"end_character":29},"updated":"2017-11-30 15:39:25.000000000","message":"it\u0027s vif[\u0027type\u0027], not vif_type, and there is no \"this vif_driver\" because we haven\u0027t determined a driver yet... how about we just say \"Missing vif type\", keep it short and sweet?","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"37492361e19c87cdfa6140821eeb1ddcac7bd248","unresolved":false,"context_lines":[{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":"    if vif.get(\u0027type\u0027) is None:"},{"line_number":70,"context_line":"        raise exception.VirtualInterfacePlugException("},{"line_number":71,"context_line":"            _(\"vif_type parameter must be present for this vif_driver \""},{"line_number":72,"context_line":"              \"implementation\"))"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    # Check the type to the implementations"},{"line_number":75,"context_line":"    if VIF_MAPPING.get(vif[\u0027type\u0027]):"}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_ee904b98","line":72,"range":{"start_line":71,"start_character":15,"end_line":72,"end_character":29},"in_reply_to":"ff82abbf_ec4f3432","updated":"2017-12-15 02:41:00.000000000","message":"Done in OVS patch","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"782781bd5757c00b7bfa39828e07125a9851bb12","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    # No matching implementation, raise error."},{"line_number":80,"context_line":"    raise exception.VirtualInterfacePlugException("},{"line_number":81,"context_line":"        _(\"Unable to find appropriate PowerVM VIF Driver for VIF type \""},{"line_number":82,"context_line":"          \"%(vif_type)s on instance %(instance)s\") %"},{"line_number":83,"context_line":"          {\u0027vif_type\u0027: vif[\u0027type\u0027], \u0027instance\u0027: instance.name})"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ff82abbf_fc48492f","line":82,"range":{"start_line":82,"start_character":23,"end_line":82,"end_character":48},"updated":"2017-11-30 15:39:25.000000000","message":"not sure if this is needed? If it is needed, then we probably need it on line 70 as well, but this seems like something that should get logged and the logs should indicate the instance by including instance\u003dinstance, rather than the exception needing that.","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"37492361e19c87cdfa6140821eeb1ddcac7bd248","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    # No matching implementation, raise error."},{"line_number":80,"context_line":"    raise exception.VirtualInterfacePlugException("},{"line_number":81,"context_line":"        _(\"Unable to find appropriate PowerVM VIF Driver for VIF type \""},{"line_number":82,"context_line":"          \"%(vif_type)s on instance %(instance)s\") %"},{"line_number":83,"context_line":"          {\u0027vif_type\u0027: vif[\u0027type\u0027], \u0027instance\u0027: instance.name})"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"df87a7cf_eed92b22","line":82,"range":{"start_line":82,"start_character":23,"end_line":82,"end_character":48},"in_reply_to":"ff82abbf_fc48492f","updated":"2017-12-15 02:41:00.000000000","message":"Done in OVS patch","commit_id":"82a5ef3bb4b19b269c3e55d363773a46f25d0205"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"75448a4d4724a72b0502e7b0639b422bdff9c23d","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    # Push a custom event if we really plugged the vif"},{"line_number":131,"context_line":"    if vnet_w is not None:"},{"line_number":132,"context_line":"        _push_vif_event(adapter, \u0027plug\u0027, vnet_w, instance, vif[\u0027type\u0027])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    return vnet_w"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_330eb234","line":132,"updated":"2018-01-02 22:39:55.000000000","message":"it looks like this is done for the OVS driver as well as SEA, so why is it not in the OVS patch as the earlier one in the sequence? Or if it\u0027s only needed for SEA, should we avoid doing this for OVS?","commit_id":"a77c6effc3ef45d85fe444fbc928c43ef36752e0"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"729f00ce1697ca514095bbcd858ec326f3411c45","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":"    # Push a custom event if we really plugged the vif"},{"line_number":131,"context_line":"    if vnet_w is not None:"},{"line_number":132,"context_line":"        _push_vif_event(adapter, \u0027plug\u0027, vnet_w, instance, vif[\u0027type\u0027])"},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"    return vnet_w"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"9f91af0f_414da070","line":132,"in_reply_to":"9f91af0f_330eb234","updated":"2018-01-03 01:17:05.000000000","message":"This was removed from the OVS patch here. Sounds like something we can avoid for OVS.\n\nhttps://review.openstack.org/#/c/422512/7/nova/virt/powervm/vif.py@91","commit_id":"a77c6effc3ef45d85fe444fbc928c43ef36752e0"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"35f95a8d429339997dfadf235a4c8ccfe414dfea","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    \"\"\"Push a custom event to the REST server for a vif action (plug/unplug)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    This event prompts the neutron agent to mark the port up or down."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    :param adapter: The pypowervm adapter."},{"line_number":81,"context_line":"    :param action: The action taken on the vif - either \u0027plug\u0027 or \u0027unplug\u0027"},{"line_number":82,"context_line":"    :param vif_w: The pypowervm wrapper of the affected vif (CNA, VNIC, etc.)"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_7a0b2223","line":79,"updated":"2018-01-09 16:53:58.000000000","message":"Wonder if we should explain more here.  \"This is consumed by custom neutron agents (e.g. for shared ethernet adapter, SR-IOV).\"","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"140ca662ef466d64c65bb01790d77e03c638f20c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"    \"\"\"Push a custom event to the REST server for a vif action (plug/unplug)."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    This event prompts the neutron agent to mark the port up or down."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    :param adapter: The pypowervm adapter."},{"line_number":81,"context_line":"    :param action: The action taken on the vif - either \u0027plug\u0027 or \u0027unplug\u0027"},{"line_number":82,"context_line":"    :param vif_w: The pypowervm wrapper of the affected vif (CNA, VNIC, etc.)"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_5c722b13","line":79,"in_reply_to":"9f91af0f_7a0b2223","updated":"2018-01-15 18:47:44.000000000","message":"Done","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"35f95a8d429339997dfadf235a4c8ccfe414dfea","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        LOG.exception(\u0027VIF unplug failed for instance\u0027, instance\u003dinstance)"},{"line_number":146,"context_line":"        raise exception.VirtualInterfaceUnplugException(reason\u003dhe.args[0])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    # Push a custom event if the vif is unplugged"},{"line_number":149,"context_line":"    if vnet_w:"},{"line_number":150,"context_line":"        _push_vif_event(adapter, \u0027unplug\u0027, vnet_w, instance, vif[\u0027type\u0027])"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_9a4e266d","line":148,"range":{"start_line":148,"start_character":37,"end_line":148,"end_character":39},"updated":"2018-01-09 16:53:58.000000000","message":"This is ambiguous.  Do we push an event if the vif winds up unplugged (regardless of whether it started off unplugged) or only if we unplugged it?  If symmetrical with the above, it\u0027d be the latter.\n\nNot a big deal; but please reword if you respin.\n\n[Later] Yeah, based on the code in unplug, it\u0027s the latter.","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"140ca662ef466d64c65bb01790d77e03c638f20c","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        LOG.exception(\u0027VIF unplug failed for instance\u0027, instance\u003dinstance)"},{"line_number":146,"context_line":"        raise exception.VirtualInterfaceUnplugException(reason\u003dhe.args[0])"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    # Push a custom event if the vif is unplugged"},{"line_number":149,"context_line":"    if vnet_w:"},{"line_number":150,"context_line":"        _push_vif_event(adapter, \u0027unplug\u0027, vnet_w, instance, vif[\u0027type\u0027])"},{"line_number":151,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_9c519365","line":148,"range":{"start_line":148,"start_character":37,"end_line":148,"end_character":39},"in_reply_to":"9f91af0f_9a4e266d","updated":"2018-01-15 18:47:44.000000000","message":"Done","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"35f95a8d429339997dfadf235a4c8ccfe414dfea","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        :param cna_w_list: (Optional, Default: None) The list of Client Network"},{"line_number":189,"context_line":"                           Adapters from pypowervm.  Providing this input"},{"line_number":190,"context_line":"                           allows for an improvement in operation speed."},{"line_number":191,"context_line":"        :return cna_w: The deleted Client Network Adapter."},{"line_number":192,"context_line":"        \"\"\""},{"line_number":193,"context_line":"        # This is a default implementation that most implementations will"},{"line_number":194,"context_line":"        # require."}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_ba8a0a67","line":191,"updated":"2018-01-09 16:53:58.000000000","message":"This should have similar words as in plug() - that we return None if the vif wasn\u0027t there in the first place.","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"140ca662ef466d64c65bb01790d77e03c638f20c","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        :param cna_w_list: (Optional, Default: None) The list of Client Network"},{"line_number":189,"context_line":"                           Adapters from pypowervm.  Providing this input"},{"line_number":190,"context_line":"                           allows for an improvement in operation speed."},{"line_number":191,"context_line":"        :return cna_w: The deleted Client Network Adapter."},{"line_number":192,"context_line":"        \"\"\""},{"line_number":193,"context_line":"        # This is a default implementation that most implementations will"},{"line_number":194,"context_line":"        # require."}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_dc863bdc","line":191,"in_reply_to":"9f91af0f_ba8a0a67","updated":"2018-01-15 18:47:44.000000000","message":"Done","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"35f95a8d429339997dfadf235a4c8ccfe414dfea","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                reason\u003dsix.text_type(e))"},{"line_number":216,"context_line":"        return cna_w"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @staticmethod"},{"line_number":219,"context_line":"    def _find_cna_for_vif(cna_w_list, vif):"},{"line_number":220,"context_line":"        \"\"\"Finds the PowerVM CNA for a given Nova VIF."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        :param cna_w_list: The list of Client Network Adapter wrappers from"},{"line_number":223,"context_line":"                           pypowervm."},{"line_number":224,"context_line":"        :param vif: The Nova Virtual Interface (virtual network interface)."},{"line_number":225,"context_line":"        :return: The CNA that corresponds to the VIF.  None if one is not"},{"line_number":226,"context_line":"                 part of the cna_w_list."},{"line_number":227,"context_line":"        \"\"\""},{"line_number":228,"context_line":"        for cna_w in cna_w_list:"},{"line_number":229,"context_line":"            # If the MAC address matched, attempt the delete."},{"line_number":230,"context_line":"            if vm.norm_mac(cna_w.mac) \u003d\u003d vif[\u0027address\u0027]:"},{"line_number":231,"context_line":"                return cna_w"},{"line_number":232,"context_line":"        return None"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"class PvmOvsVifDriver(PvmVifDriver):"}],"source_content_type":"text/x-python","patch_set":11,"id":"9f91af0f_da182e1f","line":232,"range":{"start_line":218,"start_character":0,"end_line":232,"end_character":19},"updated":"2018-01-09 16:53:58.000000000","message":"This could/should have been in the prior patch.  In case you respin the series.","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"140ca662ef466d64c65bb01790d77e03c638f20c","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                reason\u003dsix.text_type(e))"},{"line_number":216,"context_line":"        return cna_w"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @staticmethod"},{"line_number":219,"context_line":"    def _find_cna_for_vif(cna_w_list, vif):"},{"line_number":220,"context_line":"        \"\"\"Finds the PowerVM CNA for a given Nova VIF."},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        :param cna_w_list: The list of Client Network Adapter wrappers from"},{"line_number":223,"context_line":"                           pypowervm."},{"line_number":224,"context_line":"        :param vif: The Nova Virtual Interface (virtual network interface)."},{"line_number":225,"context_line":"        :return: The CNA that corresponds to the VIF.  None if one is not"},{"line_number":226,"context_line":"                 part of the cna_w_list."},{"line_number":227,"context_line":"        \"\"\""},{"line_number":228,"context_line":"        for cna_w in cna_w_list:"},{"line_number":229,"context_line":"            # If the MAC address matched, attempt the delete."},{"line_number":230,"context_line":"            if vm.norm_mac(cna_w.mac) \u003d\u003d vif[\u0027address\u0027]:"},{"line_number":231,"context_line":"                return cna_w"},{"line_number":232,"context_line":"        return None"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"class PvmOvsVifDriver(PvmVifDriver):"}],"source_content_type":"text/x-python","patch_set":11,"id":"7f96bb07_5c9a2b6e","line":232,"range":{"start_line":218,"start_character":0,"end_line":232,"end_character":19},"in_reply_to":"9f91af0f_da182e1f","updated":"2018-01-15 18:47:44.000000000","message":"Done","commit_id":"f9f576baff0ba58a84a030a2d872ac0f9b796156"},{"author":{"_account_id":10608,"name":"Matthew Edmonds","email":"edmondsw@us.ibm.com","username":"edmondsw"},"change_message_id":"e9f7fbb911e751821d65355ab24068b3859a1175","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                 part of the cna_w_list."},{"line_number":229,"context_line":"        \"\"\""},{"line_number":230,"context_line":"        for cna_w in cna_w_list:"},{"line_number":231,"context_line":"            # If the MAC address matched, attempt the delete."},{"line_number":232,"context_line":"            if vm.norm_mac(cna_w.mac) \u003d\u003d vif[\u0027address\u0027]:"},{"line_number":233,"context_line":"                return cna_w"},{"line_number":234,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f96bb07_f7f0f069","line":231,"updated":"2018-01-15 19:28:58.000000000","message":"the comment doesn\u0027t apply here","commit_id":"2b654e494c07373ef1c8f967e048eac1515803f4"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"cd2e0e71054ea3a67ce3f8ed4e2b0752be269b23","unresolved":false,"context_lines":[{"line_number":228,"context_line":"                 part of the cna_w_list."},{"line_number":229,"context_line":"        \"\"\""},{"line_number":230,"context_line":"        for cna_w in cna_w_list:"},{"line_number":231,"context_line":"            # If the MAC address matched, attempt the delete."},{"line_number":232,"context_line":"            if vm.norm_mac(cna_w.mac) \u003d\u003d vif[\u0027address\u0027]:"},{"line_number":233,"context_line":"                return cna_w"},{"line_number":234,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":15,"id":"7f96bb07_d7edb48b","line":231,"in_reply_to":"7f96bb07_f7f0f069","updated":"2018-01-15 19:30:57.000000000","message":"Deja vu. Done","commit_id":"2b654e494c07373ef1c8f967e048eac1515803f4"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"ee1d6696e41e1dca858d28f0dd3d7dd60f95985b","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        lpar_uuid \u003d vm.get_pvm_uuid(self.instance)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # CNA\u0027s require a VLAN.  Nova network puts it in network-meta."},{"line_number":370,"context_line":"        # The networking-powervm neutron agent will also send it, if so via"},{"line_number":371,"context_line":"        # the vif details."},{"line_number":372,"context_line":"        vlan \u003d vif[\u0027network\u0027][\u0027meta\u0027].get(\u0027vlan\u0027, None)"},{"line_number":373,"context_line":"        if not vlan:"},{"line_number":374,"context_line":"            vlan \u003d int(vif[\u0027details\u0027][\u0027vlan\u0027])"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        LOG.debug(\"Creating SEA-based VIF with VLAN %s\", str(vlan),"},{"line_number":377,"context_line":"                  instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f96bb07_e66b99ee","line":374,"range":{"start_line":369,"start_character":1,"end_line":374,"end_character":46},"updated":"2018-01-22 16:39:49.000000000","message":"I think you eventually removed the nova network support from the previous patch so here you can also be neutron specific.","commit_id":"e4119d0be4c6c57b6f4e26edab2aba856d3f4860"},{"author":{"_account_id":16710,"name":"Eric Berglund","email":"esberglu@us.ibm.com","username":"esberglu"},"change_message_id":"c0a1717d79bd5ad3eae33ea4decd15ffcffd885f","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        lpar_uuid \u003d vm.get_pvm_uuid(self.instance)"},{"line_number":368,"context_line":""},{"line_number":369,"context_line":"        # CNA\u0027s require a VLAN.  Nova network puts it in network-meta."},{"line_number":370,"context_line":"        # The networking-powervm neutron agent will also send it, if so via"},{"line_number":371,"context_line":"        # the vif details."},{"line_number":372,"context_line":"        vlan \u003d vif[\u0027network\u0027][\u0027meta\u0027].get(\u0027vlan\u0027, None)"},{"line_number":373,"context_line":"        if not vlan:"},{"line_number":374,"context_line":"            vlan \u003d int(vif[\u0027details\u0027][\u0027vlan\u0027])"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        LOG.debug(\"Creating SEA-based VIF with VLAN %s\", str(vlan),"},{"line_number":377,"context_line":"                  instance\u003dself.instance)"}],"source_content_type":"text/x-python","patch_set":20,"id":"7f96bb07_5c47c0bd","line":374,"range":{"start_line":369,"start_character":1,"end_line":374,"end_character":46},"in_reply_to":"7f96bb07_e66b99ee","updated":"2018-01-22 17:19:37.000000000","message":"Yep good catch. Done","commit_id":"e4119d0be4c6c57b6f4e26edab2aba856d3f4860"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c445a51dcd0d5897e5d367b00d5ec9b94d81716e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    try:"},{"line_number":93,"context_line":"        event \u003d event.create()"},{"line_number":94,"context_line":"        LOG.debug(\u0027Pushed custom event for consumption by neutron agent: %s\u0027,"},{"line_number":95,"context_line":"                  str(event), instance\u003dinstance)"},{"line_number":96,"context_line":"    except Exception:"},{"line_number":97,"context_line":"        with excutils.save_and_reraise_exception(logger\u003dLOG):"},{"line_number":98,"context_line":"            LOG.exception(\u0027Custom VIF event push failed.  %s\u0027, str(event),"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_dffc4d40","line":95,"range":{"start_line":95,"start_character":18,"end_line":95,"end_character":21},"updated":"2018-01-25 04:32:24.000000000","message":"Can this event be unicode ever? If so, use six.text_type.","commit_id":"8b3916ab9ffe427dba2334dd9c17314649ef6d67"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c445a51dcd0d5897e5d367b00d5ec9b94d81716e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"                  str(event), instance\u003dinstance)"},{"line_number":96,"context_line":"    except Exception:"},{"line_number":97,"context_line":"        with excutils.save_and_reraise_exception(logger\u003dLOG):"},{"line_number":98,"context_line":"            LOG.exception(\u0027Custom VIF event push failed.  %s\u0027, str(event),"},{"line_number":99,"context_line":"            instance\u003dinstance)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_bf994120","line":98,"range":{"start_line":98,"start_character":63,"end_line":98,"end_character":66},"updated":"2018-01-25 04:32:24.000000000","message":"same","commit_id":"8b3916ab9ffe427dba2334dd9c17314649ef6d67"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c445a51dcd0d5897e5d367b00d5ec9b94d81716e","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        # in the vif details."},{"line_number":371,"context_line":"        vlan \u003d int(vif[\u0027details\u0027][\u0027vlan\u0027])"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        LOG.debug(\"Creating SEA-based VIF with VLAN %s\", str(vlan),"},{"line_number":374,"context_line":"                  instance\u003dself.instance)"},{"line_number":375,"context_line":"        cna_w \u003d pvm_cna.crt_cna(self.adapter, None, lpar_uuid, vlan,"},{"line_number":376,"context_line":"                                mac_addr\u003dvif[\u0027address\u0027])"}],"source_content_type":"text/x-python","patch_set":21,"id":"5f93b717_bf670126","line":373,"range":{"start_line":373,"start_character":57,"end_line":373,"end_character":60},"updated":"2018-01-25 04:32:24.000000000","message":"Shouldn\u0027t really need to cast this.","commit_id":"8b3916ab9ffe427dba2334dd9c17314649ef6d67"}]}
