)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf686f188fd28143233e41ce9ed3898d728fdcf5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vladik Romanovsky \u003cvromanso@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-12-22 15:04:59 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding vlans filed to Device tagging metadata"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the network interface new vlans field and expose it in the devices"},{"line_number":10,"context_line":"metadata"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"da4df55a_c246307a","line":7,"range":{"start_line":7,"start_character":13,"end_line":7,"end_character":18},"updated":"2016-12-29 00:28:24.000000000","message":"field","commit_id":"7f6e3a4e23723be720f239c6ce75b6406ce23d28"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c54d7601b91676439c63366cade468eac33a9f51","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the network interface new vlans field and expose it in the devices"},{"line_number":10,"context_line":"metadata"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint sriov-pf-passthrough-neutron-port-vlan"},{"line_number":13,"context_line":"Change-Id: Id7b9f3f1c2107ec604e7f0ef4fbfd31a9e05d0b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5a3905b3_fa6e3efe","line":11,"updated":"2017-01-24 17:00:48.000000000","message":"Please link to the Tempest test for this change. Artom wrote a test for device tags which used the metadata service, so this can probably build onto that.","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"fbe0a8d529b6c56f84c899e961f53045f00cbfed","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the network interface new vlans field and expose it in the devices"},{"line_number":10,"context_line":"metadata"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint sriov-pf-passthrough-neutron-port-vlan"},{"line_number":13,"context_line":"Change-Id: Id7b9f3f1c2107ec604e7f0ef4fbfd31a9e05d0b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5a3905b3_6a47c51d","line":11,"in_reply_to":"5a3905b3_42fe8039","updated":"2017-01-25 01:27:47.000000000","message":"Based on [1] I actually don\u0027t think a Tempest test is possible, at least in the Jenkins CI. If we take [2] as an example, network_model.VIF_DETAILS_VLAN is the name of the field in vif[\u0027defails\u0027] that indicates the vlan. [1] says that only macvtap and hw_veb can have a vlan set. I don\u0027t think the Jenkins CI can create a port with type macvtap, and therefore we can\u0027t have a vif in Nova with a vlan field to test whether the vlan gets exposed in the metadata.\n\nIs there a third party CI that we can use to test this, one that allows us to create macvtap ports?\n\n[1] https://github.com/openstack/nova/blob/master/nova/network/model.py#L62-L65\n[2] https://github.com/openstack/nova/blob/master/nova/virt/libvirt/vif.py#L650","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a650cd00dc5cdaaa4d393f6debb7ffc9df69c2e9","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the network interface new vlans field and expose it in the devices"},{"line_number":10,"context_line":"metadata"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Implements: blueprint sriov-pf-passthrough-neutron-port-vlan"},{"line_number":13,"context_line":"Change-Id: Id7b9f3f1c2107ec604e7f0ef4fbfd31a9e05d0b0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"5a3905b3_42fe8039","line":11,"in_reply_to":"5a3905b3_fa6e3efe","updated":"2017-01-24 19:51:50.000000000","message":"Here is where the tempest test being worked on: https://review.openstack.org/#/c/424786/","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"5d4fa03b97378758b1776e9b8a92464056ef181b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vladik Romanovsky \u003cvromanso@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-24 20:00:49 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding vlans filed to Device tagging metadata"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the network interface new vlans field and expose it in the devices"},{"line_number":10,"context_line":"metadata"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"5a3905b3_ca0359bd","line":7,"updated":"2017-01-25 01:29:44.000000000","message":"Typo: field, not filed. If you\u0027re going to respin to fix someting else, please change this :)","commit_id":"1804cc84720953c6ed30314e50db84031b18df3a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"50d8ac73cea13a2d5a643751f8d2ed72a947d6f4","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vladik Romanovsky \u003cvromanso@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2017-01-24 20:00:49 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Adding vlans filed to Device tagging metadata"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the network interface new vlans field and expose it in the devices"},{"line_number":10,"context_line":"metadata"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"3a461143_2072527d","line":7,"in_reply_to":"5a3905b3_ca0359bd","updated":"2017-01-25 14:21:55.000000000","message":":)","commit_id":"1804cc84720953c6ed30314e50db84031b18df3a"}],"nova/api/metadata/base.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bf686f188fd28143233e41ce9ed3898d728fdcf5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"HAVANA \u003d \u00272013-10-17\u0027"},{"line_number":72,"context_line":"LIBERTY \u003d \u00272015-10-15\u0027"},{"line_number":73,"context_line":"NEWTON_ONE \u003d \u00272016-06-30\u0027"},{"line_number":74,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":77,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":5,"id":"da4df55a_025d9846","line":74,"updated":"2016-12-29 00:28:24.000000000","message":"You should have an OCATA version bump for this, and check for it before adding the value in the response.\n\nAlso, this patch should come AFTER actually populating the data that this uses, so this patch is in the wrong order in the series, it should come toward the end.","commit_id":"7f6e3a4e23723be720f239c6ce75b6406ce23d28"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"41687feca8dc06bae75c28c9664976b3078a30c4","unresolved":false,"context_lines":[{"line_number":74,"context_line":"LIBERTY \u003d \u00272015-10-15\u0027"},{"line_number":75,"context_line":"NEWTON_ONE \u003d \u00272016-06-30\u0027"},{"line_number":76,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":77,"context_line":"OCATA \u003d \u00272017-01-15\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":80,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_718c3280","line":77,"updated":"2017-01-18 18:19:20.000000000","message":"I\u0027d change the date to be the Ocata FF (\u00272017-01-26\u0027) but I don\u0027t think it matters much.","commit_id":"62ff893eb183122439c964baafce98d788bbbd24"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"68db4b484b9cf0327b6e675a5bd76d554c89d252","unresolved":false,"context_lines":[{"line_number":74,"context_line":"LIBERTY \u003d \u00272015-10-15\u0027"},{"line_number":75,"context_line":"NEWTON_ONE \u003d \u00272016-06-30\u0027"},{"line_number":76,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":77,"context_line":"OCATA \u003d \u00272017-01-15\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":80,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_b7890ccd","line":77,"in_reply_to":"7a3c09a3_718c3280","updated":"2017-01-19 14:51:29.000000000","message":"Yea, I\u0027ll change that. I wan\u0027t sure what should I set it on.","commit_id":"62ff893eb183122439c964baafce98d788bbbd24"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c54d7601b91676439c63366cade468eac33a9f51","unresolved":false,"context_lines":[{"line_number":74,"context_line":"LIBERTY \u003d \u00272015-10-15\u0027"},{"line_number":75,"context_line":"NEWTON_ONE \u003d \u00272016-06-30\u0027"},{"line_number":76,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":77,"context_line":"OCATA \u003d \u00272017-01-26\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":80,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_5af11294","line":77,"range":{"start_line":77,"start_character":9,"end_line":77,"end_character":19},"updated":"2017-01-24 17:00:48.000000000","message":"I believe this is usually supposed to be the release date, so 2017-02-22:\n\nhttps://releases.openstack.org/ocata/","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a650cd00dc5cdaaa4d393f6debb7ffc9df69c2e9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"LIBERTY \u003d \u00272015-10-15\u0027"},{"line_number":75,"context_line":"NEWTON_ONE \u003d \u00272016-06-30\u0027"},{"line_number":76,"context_line":"NEWTON_TWO \u003d \u00272016-10-06\u0027"},{"line_number":77,"context_line":"OCATA \u003d \u00272017-01-26\u0027"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"OPENSTACK_VERSIONS \u003d ["},{"line_number":80,"context_line":"    FOLSOM,"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_67bd4e02","line":77,"range":{"start_line":77,"start_character":9,"end_line":77,"end_character":19},"in_reply_to":"5a3905b3_5af11294","updated":"2017-01-24 19:51:50.000000000","message":"Done","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c54d7601b91676439c63366cade468eac33a9f51","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        device_metadata_list \u003d []"},{"line_number":390,"context_line":"        vif_vlans_supported \u003d self._check_os_version(OCATA, version)"},{"line_number":391,"context_line":"        if self.instance.device_metadata is not None:"},{"line_number":392,"context_line":"            # Ensure that instance info cache is updated"},{"line_number":393,"context_line":"            compute_utils.refresh_info_cache_for_instance(context,"},{"line_number":394,"context_line":"                                                          self.instance)"},{"line_number":395,"context_line":"            network_info \u003d self.instance.info_cache.network_info"},{"line_number":396,"context_line":"            vlans_by_mac \u003d netutils.get_cached_vifs_with_vlan(network_info)"},{"line_number":397,"context_line":"            for device in self.instance.device_metadata.devices:"},{"line_number":398,"context_line":"                device_metadata \u003d {}"},{"line_number":399,"context_line":"                bus \u003d \u0027none\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_3ad9a6f3","line":396,"range":{"start_line":392,"start_character":12,"end_line":396,"end_character":75},"updated":"2017-01-24 17:00:48.000000000","message":"We only need to do this if vif_vlans_supported is True, so why don\u0027t we move it into a conditional.","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a650cd00dc5cdaaa4d393f6debb7ffc9df69c2e9","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        device_metadata_list \u003d []"},{"line_number":390,"context_line":"        vif_vlans_supported \u003d self._check_os_version(OCATA, version)"},{"line_number":391,"context_line":"        if self.instance.device_metadata is not None:"},{"line_number":392,"context_line":"            # Ensure that instance info cache is updated"},{"line_number":393,"context_line":"            compute_utils.refresh_info_cache_for_instance(context,"},{"line_number":394,"context_line":"                                                          self.instance)"},{"line_number":395,"context_line":"            network_info \u003d self.instance.info_cache.network_info"},{"line_number":396,"context_line":"            vlans_by_mac \u003d netutils.get_cached_vifs_with_vlan(network_info)"},{"line_number":397,"context_line":"            for device in self.instance.device_metadata.devices:"},{"line_number":398,"context_line":"                device_metadata \u003d {}"},{"line_number":399,"context_line":"                bus \u003d \u0027none\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_c229908b","line":396,"range":{"start_line":392,"start_character":12,"end_line":396,"end_character":75},"in_reply_to":"5a3905b3_3ad9a6f3","updated":"2017-01-24 19:51:50.000000000","message":"Done","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c54d7601b91676439c63366cade468eac33a9f51","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                        address \u003d device.bus.address"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"                if isinstance(device, metadata_obj.NetworkInterfaceMetadata):"},{"line_number":424,"context_line":"                    vlan \u003d vlans_by_mac.get(device.mac)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":427,"context_line":"                    # don\u0027t support vlans"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_ba9af611","line":424,"updated":"2017-01-24 17:00:48.000000000","message":"I don\u0027t understand why this isn\u0027t in a conditional for vif_vlans_supported.","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"a650cd00dc5cdaaa4d393f6debb7ffc9df69c2e9","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                        address \u003d device.bus.address"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"                if isinstance(device, metadata_obj.NetworkInterfaceMetadata):"},{"line_number":424,"context_line":"                    vlan \u003d vlans_by_mac.get(device.mac)"},{"line_number":425,"context_line":""},{"line_number":426,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":427,"context_line":"                    # don\u0027t support vlans"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_423680e8","line":424,"in_reply_to":"5a3905b3_ba9af611","updated":"2017-01-24 19:51:50.000000000","message":"Done","commit_id":"a8e1fbc6be8e3251262f605556c090cfb7f3a5aa"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ded26272e97ec42078bc6b1372302ae97982021","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                compute_utils.refresh_info_cache_for_instance(context,"},{"line_number":395,"context_line":"                                                              self.instance)"},{"line_number":396,"context_line":"                network_info \u003d self.instance.info_cache.network_info"},{"line_number":397,"context_line":"                vlans_by_mac \u003d netutils.get_cached_vifs_with_vlan(network_info)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"            for device in self.instance.device_metadata.devices:"},{"line_number":400,"context_line":"                device_metadata \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_de792dfe","line":397,"range":{"start_line":397,"start_character":16,"end_line":397,"end_character":79},"updated":"2017-01-26 17:29:28.000000000","message":"Related to my question in the previous patch in the series, we already do this in the libvirt driver when building the device metadata - if we stored the vlan on the NetworkInterfaceMetadata in the libvirt driver (like the tag), we wouldn\u0027t have to do this again here.","commit_id":"6a0df70dd104f6386a87bd76b7007da4b9c12c50"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"ecb3ac9ba8243c5330aa720b123d46a787dff7f9","unresolved":false,"context_lines":[{"line_number":394,"context_line":"                compute_utils.refresh_info_cache_for_instance(context,"},{"line_number":395,"context_line":"                                                              self.instance)"},{"line_number":396,"context_line":"                network_info \u003d self.instance.info_cache.network_info"},{"line_number":397,"context_line":"                vlans_by_mac \u003d netutils.get_cached_vifs_with_vlan(network_info)"},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"            for device in self.instance.device_metadata.devices:"},{"line_number":400,"context_line":"                device_metadata \u003d {}"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_500d2136","line":397,"range":{"start_line":397,"start_character":16,"end_line":397,"end_character":79},"in_reply_to":"3a461143_de792dfe","updated":"2017-01-26 20:18:35.000000000","message":"Done","commit_id":"6a0df70dd104f6386a87bd76b7007da4b9c12c50"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"5ded26272e97ec42078bc6b1372302ae97982021","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                    if vif_vlans_supported:"},{"line_number":428,"context_line":"                        vlan \u003d vlans_by_mac.get(device.mac)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":431,"context_line":"                    # don\u0027t support vlans"},{"line_number":432,"context_line":"                    if not (vlan or \u0027tags\u0027 in device):"},{"line_number":433,"context_line":"                        continue"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027nic\u0027"},{"line_number":436,"context_line":"                    device_metadata[\u0027mac\u0027] \u003d device.mac"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_be738114","line":433,"range":{"start_line":430,"start_character":20,"end_line":433,"end_character":32},"updated":"2017-01-26 17:29:28.000000000","message":"This is more duplication from the libvirt driver logic.","commit_id":"6a0df70dd104f6386a87bd76b7007da4b9c12c50"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"ecb3ac9ba8243c5330aa720b123d46a787dff7f9","unresolved":false,"context_lines":[{"line_number":427,"context_line":"                    if vif_vlans_supported:"},{"line_number":428,"context_line":"                        vlan \u003d vlans_by_mac.get(device.mac)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":431,"context_line":"                    # don\u0027t support vlans"},{"line_number":432,"context_line":"                    if not (vlan or \u0027tags\u0027 in device):"},{"line_number":433,"context_line":"                        continue"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027nic\u0027"},{"line_number":436,"context_line":"                    device_metadata[\u0027mac\u0027] \u003d device.mac"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_f0ffedfe","line":433,"range":{"start_line":430,"start_character":20,"end_line":433,"end_character":32},"in_reply_to":"3a461143_be738114","updated":"2017-01-26 20:18:35.000000000","message":"Done","commit_id":"6a0df70dd104f6386a87bd76b7007da4b9c12c50"},{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"c38b1c8c465547d24bde4fb96016733072bc6226","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                        address \u003d device.bus.address"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"                if isinstance(device, metadata_obj.NetworkInterfaceMetadata):"},{"line_number":419,"context_line":"                    vlan \u003d None"},{"line_number":420,"context_line":"                    if vif_vlans_supported and \u0027vlan\u0027 in device:"},{"line_number":421,"context_line":"                        vlan \u003d device.vlan"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":424,"context_line":"                    # don\u0027t support vlans"},{"line_number":425,"context_line":"                    if not (vlan or \u0027tags\u0027 in device):"},{"line_number":426,"context_line":"                        continue"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027nic\u0027"},{"line_number":429,"context_line":"                    device_metadata[\u0027mac\u0027] \u003d device.mac"},{"line_number":430,"context_line":"                    if vlan:"},{"line_number":431,"context_line":"                        device_metadata[\u0027vlan\u0027] \u003d vlan"},{"line_number":432,"context_line":"                elif isinstance(device, metadata_obj.DiskMetadata):"},{"line_number":433,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027disk\u0027"},{"line_number":434,"context_line":"                    # serial and path are optional parameters"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a461143_f629a638","line":431,"range":{"start_line":419,"start_character":20,"end_line":431,"end_character":54},"updated":"2017-01-26 20:39:49.000000000","message":"Wouldn\u0027t something like this be easier to read:\n\n# Skip devices without tags on versions that\n# don\u0027t support vlans\nif not (vlan or \u0027tags\u0027 in device):\n    continue\nif vif_vlans_supported and \u0027vlan\u0027 in device:\n    device_metadata[\u0027vlan\u0027] \u003d device.vlan\ndevice_metadata[\u0027type\u0027] \u003d \u0027nic\u0027\ndevice_metadata[\u0027mac\u0027] \u003d device.mac","commit_id":"4e4ca4f35f04d1d0f383367aade0eb20ce627c79"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"b73e4a79642792595dc7a643087551432b4c7aa1","unresolved":false,"context_lines":[{"line_number":416,"context_line":"                        address \u003d device.bus.address"},{"line_number":417,"context_line":""},{"line_number":418,"context_line":"                if isinstance(device, metadata_obj.NetworkInterfaceMetadata):"},{"line_number":419,"context_line":"                    vlan \u003d None"},{"line_number":420,"context_line":"                    if vif_vlans_supported and \u0027vlan\u0027 in device:"},{"line_number":421,"context_line":"                        vlan \u003d device.vlan"},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":424,"context_line":"                    # don\u0027t support vlans"},{"line_number":425,"context_line":"                    if not (vlan or \u0027tags\u0027 in device):"},{"line_number":426,"context_line":"                        continue"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027nic\u0027"},{"line_number":429,"context_line":"                    device_metadata[\u0027mac\u0027] \u003d device.mac"},{"line_number":430,"context_line":"                    if vlan:"},{"line_number":431,"context_line":"                        device_metadata[\u0027vlan\u0027] \u003d vlan"},{"line_number":432,"context_line":"                elif isinstance(device, metadata_obj.DiskMetadata):"},{"line_number":433,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027disk\u0027"},{"line_number":434,"context_line":"                    # serial and path are optional parameters"}],"source_content_type":"text/x-python","patch_set":14,"id":"3a461143_76ee96b5","line":431,"range":{"start_line":419,"start_character":20,"end_line":431,"end_character":54},"in_reply_to":"3a461143_f629a638","updated":"2017-01-26 20:45:14.000000000","message":"yes, but vlan variable is not initialized in \"if not (vlan or \u0027tags\u0027 in device):\"\nOtherwise it\u0027ll go back to what it is now...","commit_id":"4e4ca4f35f04d1d0f383367aade0eb20ce627c79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c5093c2dc0f7a31dc7b39e86fad3defc55755ab3","unresolved":false,"context_lines":[{"line_number":433,"context_line":"                device_metadata[\u0027tags\u0027] \u003d device.tags"},{"line_number":434,"context_line":""},{"line_number":435,"context_line":"                device_metadata_list.append(device_metadata)"},{"line_number":436,"context_line":""},{"line_number":437,"context_line":"        return device_metadata_list"},{"line_number":438,"context_line":""},{"line_number":439,"context_line":"    def _handle_content(self, path_tokens):"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a461143_b0ec7e2a","side":"PARENT","line":436,"updated":"2017-01-26 22:56:46.000000000","message":"nit: unrelated","commit_id":"18a23b747b410c81ff222cc552943326aacbb179"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c5093c2dc0f7a31dc7b39e86fad3defc55755ab3","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                    if vif_vlans_supported and \u0027vlan\u0027 in device:"},{"line_number":420,"context_line":"                        vlan \u003d device.vlan"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":423,"context_line":"                    # don\u0027t support vlans"},{"line_number":424,"context_line":"                    if not (vlan or \u0027tags\u0027 in device):"},{"line_number":425,"context_line":"                        continue"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027nic\u0027"},{"line_number":428,"context_line":"                    device_metadata[\u0027mac\u0027] \u003d device.mac"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a461143_50bfdafa","line":425,"range":{"start_line":422,"start_character":20,"end_line":425,"end_character":32},"updated":"2017-01-26 22:56:46.000000000","message":"I don\u0027t understand this change. Before this change, we\u0027d always include the NetworkInterfaceMetadata even if it didn\u0027t have tags, but now we\u0027re skipping it, why?","commit_id":"3e0c224092d72fe410099235aea81d6d416539d3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fa81d62add4e8c1bfff85a9723650d0ffa15012","unresolved":false,"context_lines":[{"line_number":419,"context_line":"                    if vif_vlans_supported and \u0027vlan\u0027 in device:"},{"line_number":420,"context_line":"                        vlan \u003d device.vlan"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"                    # Skip devices without tags on versions that"},{"line_number":423,"context_line":"                    # don\u0027t support vlans"},{"line_number":424,"context_line":"                    if not (vlan or \u0027tags\u0027 in device):"},{"line_number":425,"context_line":"                        continue"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"                    device_metadata[\u0027type\u0027] \u003d \u0027nic\u0027"},{"line_number":428,"context_line":"                    device_metadata[\u0027mac\u0027] \u003d device.mac"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a461143_30ca4e6f","line":425,"range":{"start_line":422,"start_character":20,"end_line":425,"end_character":32},"in_reply_to":"3a461143_50bfdafa","updated":"2017-01-26 23:00:45.000000000","message":"Is this because of the change here?\n\nhttps://review.openstack.org/#/c/405954/11/nova/virt/libvirt/driver.py@7706\n\nSuch that if we have a device with a vlan but no tag, we don\u0027t set the device.tags field and therefore wouldn\u0027t have the device to process here...","commit_id":"3e0c224092d72fe410099235aea81d6d416539d3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c5093c2dc0f7a31dc7b39e86fad3defc55755ab3","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"                device_metadata[\u0027bus\u0027] \u003d bus"},{"line_number":445,"context_line":"                device_metadata[\u0027address\u0027] \u003d address"},{"line_number":446,"context_line":"                if \u0027tags\u0027 in device:"},{"line_number":447,"context_line":"                    device_metadata[\u0027tags\u0027] \u003d device.tags"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"                device_metadata_list.append(device_metadata)"},{"line_number":450,"context_line":"        return device_metadata_list"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a461143_70ba160c","line":447,"range":{"start_line":446,"start_character":16,"end_line":447,"end_character":57},"updated":"2017-01-26 22:56:46.000000000","message":"I don\u0027t understand why this needs to change.","commit_id":"3e0c224092d72fe410099235aea81d6d416539d3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fa81d62add4e8c1bfff85a9723650d0ffa15012","unresolved":false,"context_lines":[{"line_number":443,"context_line":""},{"line_number":444,"context_line":"                device_metadata[\u0027bus\u0027] \u003d bus"},{"line_number":445,"context_line":"                device_metadata[\u0027address\u0027] \u003d address"},{"line_number":446,"context_line":"                if \u0027tags\u0027 in device:"},{"line_number":447,"context_line":"                    device_metadata[\u0027tags\u0027] \u003d device.tags"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"                device_metadata_list.append(device_metadata)"},{"line_number":450,"context_line":"        return device_metadata_list"}],"source_content_type":"text/x-python","patch_set":16,"id":"3a461143_b08b9e1d","line":447,"range":{"start_line":446,"start_character":16,"end_line":447,"end_character":57},"in_reply_to":"3a461143_70ba160c","updated":"2017-01-26 23:00:45.000000000","message":"I guess for the same reason as above because of this change:\n\nhttps://review.openstack.org/#/c/405954/11/nova/virt/libvirt/driver.py@7706\n\nBecause we can have a device with a vlan but no tags.","commit_id":"3e0c224092d72fe410099235aea81d6d416539d3"}],"nova/tests/unit/test_metadata.py":[{"author":{"_account_id":8864,"name":"Artom Lifshitz","email":"notartom@gmail.com","username":"artom"},"change_message_id":"41687feca8dc06bae75c28c9664976b3078a30c4","unresolved":false,"context_lines":[{"line_number":456,"context_line":"            \u0027openstack/2016-10-06/vendor_data.json\u0027,"},{"line_number":457,"context_line":"            \u0027openstack/2016-10-06/network_data.json\u0027,"},{"line_number":458,"context_line":"            \u0027openstack/2016-10-06/vendor_data2.json\u0027,"},{"line_number":459,"context_line":"            \u0027openstack/2017-01-15/meta_data.json\u0027,"},{"line_number":460,"context_line":"            \u0027openstack/2017-01-15/user_data\u0027,"},{"line_number":461,"context_line":"            \u0027openstack/2017-01-15/vendor_data.json\u0027,"},{"line_number":462,"context_line":"            \u0027openstack/2017-01-15/network_data.json\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"7a3c09a3_91299ef5","line":459,"updated":"2017-01-18 18:19:20.000000000","message":"If you end up changing the date in base.py, change it here as well.","commit_id":"62ff893eb183122439c964baafce98d788bbbd24"}],"releasenotes/notes/sriov-pf-passthrough-neutron-port-vlan-7d19df7ac6e2730a.yaml":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"72250a86ae4791b4a3babdc83172661409ce6a6a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This features exposes a VLAN tags of an instance network interfaces to the"},{"line_number":5,"context_line":"    guest instance through the device tagging mechanism. This VLAN tag is"},{"line_number":6,"context_line":"    exposed to the instance through the metadata API and on the config drive."},{"line_number":7,"context_line":"    This is especially useful for assigned SR-IOV physical functions, as the"},{"line_number":8,"context_line":"    VLAN configuration for the guest\u0027s virtual interfaces associated with such"},{"line_number":9,"context_line":"    devices, can only be done within the guest instance itself."},{"line_number":10,"context_line":"    Guest OS will be able to consume this information about the devices and"},{"line_number":11,"context_line":"    configure the provided VLAN tags."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3a461143_a77491fd","line":11,"range":{"start_line":4,"start_character":0,"end_line":11,"end_character":37},"updated":"2017-01-25 17:06:48.000000000","message":"Could we try something like this?\n\n \u003e VLAN tags associated with instance network interfaces are now exposed via the metadata API and instance config drives and can be consumed by the instance. This is an extension of the device tagging mechanism added in past releases. This is useful for instances utilizing SR-IOV physical functions (PFs). The VLAN configuration for these devices cannot be directly accessed or configured inside the guest OS, but a virtual interface associated with any such device must be nonetheless be configured with the VLAN tags of the device to ensure packet delivery. This feature makes this possible.","commit_id":"9cfbe6b56295d2c78a035eabc216b12434a19ddc"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"13b2c607820418ab8214c9dc939902c6029b1b4a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    This features exposes a VLAN tags of an instance network interfaces to the"},{"line_number":5,"context_line":"    guest instance through the device tagging mechanism. This VLAN tag is"},{"line_number":6,"context_line":"    exposed to the instance through the metadata API and on the config drive."},{"line_number":7,"context_line":"    This is especially useful for assigned SR-IOV physical functions, as the"},{"line_number":8,"context_line":"    VLAN configuration for the guest\u0027s virtual interfaces associated with such"},{"line_number":9,"context_line":"    devices, can only be done within the guest instance itself."},{"line_number":10,"context_line":"    Guest OS will be able to consume this information about the devices and"},{"line_number":11,"context_line":"    configure the provided VLAN tags."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"3a461143_1d14d4f3","line":11,"range":{"start_line":4,"start_character":0,"end_line":11,"end_character":37},"in_reply_to":"3a461143_a77491fd","updated":"2017-01-25 17:32:46.000000000","message":"Thanks","commit_id":"9cfbe6b56295d2c78a035eabc216b12434a19ddc"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c5093c2dc0f7a31dc7b39e86fad3defc55755ab3","unresolved":false,"context_lines":[{"line_number":9,"context_line":"    associated with these devices cannot be configured inside the guest OS from"},{"line_number":10,"context_line":"    the host, but nonetheless must be configured with the VLAN tags of the"},{"line_number":11,"context_line":"    device to ensure packet delivery. This feature makes this possible."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":16,"id":"3a461143_70ff76aa","line":12,"updated":"2017-01-26 22:56:46.000000000","message":"We should probably add a note that this is currently only supported by the libvirt compute driver.","commit_id":"3e0c224092d72fe410099235aea81d6d416539d3"}]}
