)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5ca25f22011bead61e3c914870f289c1f1b35c1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Paddu Krishnan \u003ckprad1@yahoo.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-26 17:24:10 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"VDP Support in OVS Neutron Agent - Part 2"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This sub-patch has changes in OVS Neutron agent to support VDP and"},{"line_number":10,"context_line":" related unit tests"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1abeadc6_2b0de890","line":7,"updated":"2014-08-27 08:05:18.000000000","message":"\"- Part 2\" is unnecessary because the summary line contains the unique message \"VDP Support in OVS Neutron Agent\" and  there is no \"Part 1\" of \"VDP Support in OVS Neutron Agent\".\n\nIf you want to have \"Part 2\" in the commit message, it looks good to add:\n\n  Part 2 of blueprint vdp-network-overlay implementaitons","commit_id":"fc5a118efd9e4bd6e44c6cd185da1bc272db7cd2"}],"etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini":[{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"c3f8cfc0c81c098a067551d3941d0c849bdf74cb","unresolved":false,"context_lines":[{"line_number":160,"context_line":"#"},{"line_number":161,"context_line":"# enable_distributed_routing \u003d False"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"# Controls if the overlay used is Host or Network based overlay."},{"line_number":164,"context_line":"# Host based overlays are the defaults in Openstack where the tunneling"},{"line_number":165,"context_line":"# starts from the vswitch."},{"line_number":166,"context_line":"# Network based overlays are when tunneling starts from the network or fabric."}],"source_content_type":"text/x-properties","patch_set":5,"id":"1abeadc6_bd05f115","line":163,"updated":"2014-08-26 06:45:28.000000000","message":"As seen in the existing option description, can you also add (data-type) in the comments.\n\nRefer L153 above.","commit_id":"568e140bf3fe1f33a97afabbc66b92d0c46c9bb2"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"5845f1201174bc01c68128e71a3ef1655e3b9942","unresolved":false,"context_lines":[{"line_number":160,"context_line":"#"},{"line_number":161,"context_line":"# enable_distributed_routing \u003d False"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"# Controls if the overlay used is Host or Network based overlay."},{"line_number":164,"context_line":"# Host based overlays are the defaults in Openstack where the tunneling"},{"line_number":165,"context_line":"# starts from the vswitch."},{"line_number":166,"context_line":"# Network based overlays are when tunneling starts from the network or fabric."}],"source_content_type":"text/x-properties","patch_set":5,"id":"1abeadc6_e38c2c82","line":163,"in_reply_to":"1abeadc6_bd05f115","updated":"2014-08-26 07:33:00.000000000","message":"ok, can do, when i submit my next patch.","commit_id":"568e140bf3fe1f33a97afabbc66b92d0c46c9bb2"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"e5ca25f22011bead61e3c914870f289c1f1b35c1","unresolved":false,"context_lines":[{"line_number":159,"context_line":"# for distributed virtual routing."},{"line_number":160,"context_line":"#"},{"line_number":161,"context_line":"# enable_distributed_routing \u003d False"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"# (BoolOpt) Controls if the overlay used is Host or Network based overlay."},{"line_number":164,"context_line":"# Host based overlays are the defaults in Openstack where the tunneling"},{"line_number":165,"context_line":"# starts from the vswitch."}],"source_content_type":"text/x-properties","patch_set":6,"id":"1abeadc6_ebc77010","line":162,"updated":"2014-08-27 08:05:18.000000000","message":"Listing options from lldpad lib looks reasonable at the moment as lldpad lib is used in ovs-agent.","commit_id":"fc5a118efd9e4bd6e44c6cd185da1bc272db7cd2"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.iter_num \u003d 0"},{"line_number":258,"context_line":"        self.run_daemon_loop \u003d True"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def host_overlay_enabled(self):"},{"line_number":261,"context_line":"        return self.host_overlay"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def vdp_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_8f7f71df","line":260,"updated":"2014-08-22 17:39:52.000000000","message":"I don\u0027t see any reason this method is needed.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        self.iter_num \u003d 0"},{"line_number":258,"context_line":"        self.run_daemon_loop \u003d True"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    def host_overlay_enabled(self):"},{"line_number":261,"context_line":"        return self.host_overlay"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    def vdp_enabled(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_c8d85b82","line":260,"in_reply_to":"1abeadc6_8f7f71df","updated":"2014-08-25 07:41:06.000000000","message":"Today it\u0027s a simple one line function. It provides a level of abstraction which has regular benefits. Like, you can change the functionality of this function tomorrow without changing other places.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        # NOTE: The oui data prepared by this method will be used by another"},{"line_number":357,"context_line":"        # blueprint that implements support for VDP in neutron agent:"},{"line_number":358,"context_line":"        # https://review.openstack.org/#/c/89728/"},{"line_number":359,"context_line":"        LOG.debug(\"vm_info received\")"},{"line_number":360,"context_line":"        vminfo \u003d kwargs.get(\u0027vm_info\u0027)"},{"line_number":361,"context_line":"        if not vminfo:"},{"line_number":362,"context_line":"            LOG.error(_(\"NULL VM Info received\"))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_2f4d7dc4","line":359,"updated":"2014-08-22 17:39:52.000000000","message":"I think it is useful kwargs is included in the log message.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":356,"context_line":"        # NOTE: The oui data prepared by this method will be used by another"},{"line_number":357,"context_line":"        # blueprint that implements support for VDP in neutron agent:"},{"line_number":358,"context_line":"        # https://review.openstack.org/#/c/89728/"},{"line_number":359,"context_line":"        LOG.debug(\"vm_info received\")"},{"line_number":360,"context_line":"        vminfo \u003d kwargs.get(\u0027vm_info\u0027)"},{"line_number":361,"context_line":"        if not vminfo:"},{"line_number":362,"context_line":"            LOG.error(_(\"NULL VM Info received\"))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_1c1614f2","line":359,"in_reply_to":"1abeadc6_2f4d7dc4","updated":"2014-08-25 07:41:06.000000000","message":"Done","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        host_name \u003d vminfo.get(\u0027host\u0027)"},{"line_number":366,"context_line":"        if q_utils.get_hostname() !\u003d host_name:"},{"line_number":367,"context_line":"            infomsg \u003d _(\"port_id %(port_id)s only exist on %(host)s.\")"},{"line_number":368,"context_line":"            LOG.info(infomsg % {\u0027port_id\u0027: port_id,"},{"line_number":369,"context_line":"                                \u0027host\u0027: host_name})"},{"line_number":370,"context_line":"            return"},{"line_number":371,"context_line":"        #Move this function to ovs_vdp.py after resolving conflict with 89728"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_ef6f0529","line":368,"updated":"2014-08-22 17:39:52.000000000","message":"Use a comma instead of %.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        host_name \u003d vminfo.get(\u0027host\u0027)"},{"line_number":366,"context_line":"        if q_utils.get_hostname() !\u003d host_name:"},{"line_number":367,"context_line":"            infomsg \u003d _(\"port_id %(port_id)s only exist on %(host)s.\")"},{"line_number":368,"context_line":"            LOG.info(infomsg % {\u0027port_id\u0027: port_id,"},{"line_number":369,"context_line":"                                \u0027host\u0027: host_name})"},{"line_number":370,"context_line":"            return"},{"line_number":371,"context_line":"        #Move this function to ovs_vdp.py after resolving conflict with 89728"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7f253a5b","line":368,"in_reply_to":"1abeadc6_ef6f0529","updated":"2014-08-25 07:41:06.000000000","message":"Done","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        oui_type \u003d vminfo.get(\u0027oui_type\u0027)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        lvm \u003d self.local_vlan_map.get(net_uuid)"},{"line_number":381,"context_line":"        if not lvm:"},{"line_number":382,"context_line":"            return"},{"line_number":383,"context_line":"        # There\u0027s a good chance this RPC may come before lvm is populated."},{"line_number":384,"context_line":"        # To be handled. TODO(padkrish)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_ef04654b","line":381,"updated":"2014-08-22 17:39:52.000000000","message":"Don\u0027t we need to log here? I am not sure.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":378,"context_line":"        oui_type \u003d vminfo.get(\u0027oui_type\u0027)"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"        lvm \u003d self.local_vlan_map.get(net_uuid)"},{"line_number":381,"context_line":"        if not lvm:"},{"line_number":382,"context_line":"            return"},{"line_number":383,"context_line":"        # There\u0027s a good chance this RPC may come before lvm is populated."},{"line_number":384,"context_line":"        # To be handled. TODO(padkrish)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7cb3880a","line":381,"in_reply_to":"1abeadc6_ef04654b","updated":"2014-08-25 07:41:06.000000000","message":"It\u0027s not an error case. But, sure, doesn\u0027t hurt to add a debug. Will add.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                   \"net-id\u003d%(net_uuid)s\"),"},{"line_number":620,"context_line":"                 {\u0027vlan_id\u0027: lvid, \u0027net_uuid\u0027: net_uuid})"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        if network_type in p_const.TYPE_VDP_VLAN and self.vdp_enabled():"},{"line_number":623,"context_line":"            self.provision_vdp_overlay_networks(port, net_uuid,"},{"line_number":624,"context_line":"                                                physical_network,"},{"line_number":625,"context_line":"                                                segmentation_id, lvid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_2f92ddf5","line":622,"updated":"2014-08-22 17:39:52.000000000","message":"If vdp is not enabled, we will see the log message \"unknown network type vdp_vlan\". It looks strange. vdp_vlan is known.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":619,"context_line":"                   \"net-id\u003d%(net_uuid)s\"),"},{"line_number":620,"context_line":"                 {\u0027vlan_id\u0027: lvid, \u0027net_uuid\u0027: net_uuid})"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"        if network_type in p_const.TYPE_VDP_VLAN and self.vdp_enabled():"},{"line_number":623,"context_line":"            self.provision_vdp_overlay_networks(port, net_uuid,"},{"line_number":624,"context_line":"                                                physical_network,"},{"line_number":625,"context_line":"                                                segmentation_id, lvid)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_3c875014","line":622,"in_reply_to":"1abeadc6_2f92ddf5","updated":"2014-08-25 07:41:06.000000000","message":"Makes sense. I will add the check for vdp_enabled inside the network_type check and will log the appropriate error message there.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                  \u0027net_uuid\u0027: net_uuid})"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        if lvm.network_type in p_const.TYPE_VDP_VLAN and ("},{"line_number":664,"context_line":"           self.vdp_enabled()):"},{"line_number":665,"context_line":"            self.del_vdp_vlan_flows(lvm)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        elif lvm.network_type in constants.TUNNEL_NETWORK_TYPES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_0fae012e","line":664,"updated":"2014-08-22 17:39:52.000000000","message":"Same comment on unknown network type as the above.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":661,"context_line":"                  \u0027net_uuid\u0027: net_uuid})"},{"line_number":662,"context_line":""},{"line_number":663,"context_line":"        if lvm.network_type in p_const.TYPE_VDP_VLAN and ("},{"line_number":664,"context_line":"           self.vdp_enabled()):"},{"line_number":665,"context_line":"            self.del_vdp_vlan_flows(lvm)"},{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        elif lvm.network_type in constants.TUNNEL_NETWORK_TYPES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_fc74f837","line":664,"in_reply_to":"1abeadc6_0fae012e","updated":"2014-08-25 07:41:06.000000000","message":"Will do.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"c3f8cfc0c81c098a067551d3941d0c849bdf74cb","unresolved":false,"context_lines":[{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        if lvm.network_type \u003d\u003d p_const.TYPE_VDP_VLAN:"},{"line_number":668,"context_line":"            if self.vdp_enabled():"},{"line_number":669,"context_line":"                self.del_vdp_vlan_flows(lvm)"},{"line_number":670,"context_line":"            else:"},{"line_number":671,"context_line":"                LOG.error(_(\"VDP config is not enabled for network_type \""},{"line_number":672,"context_line":"                            \"%(network_type)s, net-id\u003d%(net_uuid)s\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_d8471b4a","line":669,"updated":"2014-08-26 06:45:28.000000000","message":"suggestion: Can you put a debug log for create/delete/update with respective argument. I feel this will enable end users to see how the flow is going and simplify the debugging.","commit_id":"568e140bf3fe1f33a97afabbc66b92d0c46c9bb2"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"5845f1201174bc01c68128e71a3ef1655e3b9942","unresolved":false,"context_lines":[{"line_number":666,"context_line":""},{"line_number":667,"context_line":"        if lvm.network_type \u003d\u003d p_const.TYPE_VDP_VLAN:"},{"line_number":668,"context_line":"            if self.vdp_enabled():"},{"line_number":669,"context_line":"                self.del_vdp_vlan_flows(lvm)"},{"line_number":670,"context_line":"            else:"},{"line_number":671,"context_line":"                LOG.error(_(\"VDP config is not enabled for network_type \""},{"line_number":672,"context_line":"                            \"%(network_type)s, net-id\u003d%(net_uuid)s\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_83a29898","line":669,"in_reply_to":"1abeadc6_d8471b4a","updated":"2014-08-26 07:33:00.000000000","message":"Understood and right suggestion. But, overall, all the debug information is already present. ovs_vdp prints the information when a flow is added/deleted. OVS neutron agent follows the same structure as the other network type.","commit_id":"568e140bf3fe1f33a97afabbc66b92d0c46c9bb2"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":357,"context_line":"        LOG.debug(\"vm_info received %s\", kwargs)"},{"line_number":358,"context_line":"        vminfo \u003d kwargs.get(\u0027vm_info\u0027)"},{"line_number":359,"context_line":"        if not vminfo:"},{"line_number":360,"context_line":"            LOG.error(_(\"NULL VM Info received\"))"},{"line_number":361,"context_line":"            return"},{"line_number":362,"context_line":"        port_id \u003d vminfo.get(\u0027port_id\u0027)"},{"line_number":363,"context_line":"        host_name \u003d vminfo.get(\u0027host\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_a2cdbc5f","line":360,"updated":"2014-09-08 21:47:20.000000000","message":"Can use the newer _LE() hint for error (and other) log messages. Here and others below...","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"}],"neutron/plugins/openvswitch/agent/ovs_vdp.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            br \u003d self.phys_brs[physical_network]"},{"line_number":55,"context_line":"            lldp_ovs_veth_str \u003d constants.LLDPAD_OVS_VETH_PORT + uplink"},{"line_number":56,"context_line":"            lldp_loc_veth_str \u003d constants.LLDPAD_LOC_VETH_PORT + uplink"},{"line_number":57,"context_line":"            high_prio \u003d 99"},{"line_number":58,"context_line":"            br.delete_port(lldp_ovs_veth_str)"},{"line_number":59,"context_line":"            ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper)"},{"line_number":60,"context_line":"            if ip_lib.device_exists(lldp_ovs_veth_str,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_6f6135a8","line":57,"updated":"2014-08-22 17:39:52.000000000","message":"It is better to be a constant.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":54,"context_line":"            br \u003d self.phys_brs[physical_network]"},{"line_number":55,"context_line":"            lldp_ovs_veth_str \u003d constants.LLDPAD_OVS_VETH_PORT + uplink"},{"line_number":56,"context_line":"            lldp_loc_veth_str \u003d constants.LLDPAD_LOC_VETH_PORT + uplink"},{"line_number":57,"context_line":"            high_prio \u003d 99"},{"line_number":58,"context_line":"            br.delete_port(lldp_ovs_veth_str)"},{"line_number":59,"context_line":"            ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper)"},{"line_number":60,"context_line":"            if ip_lib.device_exists(lldp_ovs_veth_str,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_d2cc8564","line":57,"in_reply_to":"1abeadc6_6f6135a8","updated":"2014-08-25 07:41:06.000000000","message":"ok, can put it in constants file :). This is another place where OVS neutron agent also needs to be cleaned to remove the hard-coding. Like..\nbr.add_flow(table\u003dconstants.UCAST_TO_TUN,\n                        priority\u003d2,","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                     \"mod_vlan_vid:%s,normal\" % lvid)"},{"line_number":197,"context_line":"            else:"},{"line_number":198,"context_line":"                emsg \u003d _(\"Returned vlan %(vlan)s is invalid.\")"},{"line_number":199,"context_line":"                LOG.error(emsg % {\u0027vlan\u0027: vdp_vlan})"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            # Even if it\u0027s 0, it\u0027s still stored to reflect provider"},{"line_number":202,"context_line":"            # hasn\u0027t allocated a VLAN from VDP, happens during error case."}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_cfe969b8","line":199,"updated":"2014-08-22 17:39:52.000000000","message":"Use , instead of %.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":196,"context_line":"                                     \"mod_vlan_vid:%s,normal\" % lvid)"},{"line_number":197,"context_line":"            else:"},{"line_number":198,"context_line":"                emsg \u003d _(\"Returned vlan %(vlan)s is invalid.\")"},{"line_number":199,"context_line":"                LOG.error(emsg % {\u0027vlan\u0027: vdp_vlan})"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"            # Even if it\u0027s 0, it\u0027s still stored to reflect provider"},{"line_number":202,"context_line":"            # hasn\u0027t allocated a VLAN from VDP, happens during error case."}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_ff9dca67","line":199,"in_reply_to":"1abeadc6_cfe969b8","updated":"2014-08-25 07:41:06.000000000","message":"Done","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        :lvid: Local VLAN ID"},{"line_number":215,"context_line":"        \u0027\u0027\u0027"},{"line_number":216,"context_line":"        if physical_network in self.phys_brs:"},{"line_number":217,"context_line":"            vdp_vlan \u003d 0"},{"line_number":218,"context_line":"            lldpad_port \u003d self.lldpad_info.get(physical_network)"},{"line_number":219,"context_line":"            if lldpad_port:"},{"line_number":220,"context_line":"                vdp_vlan \u003d self.get_vlan_from_vdp(lldpad_port, net_uuid,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_0ff6018f","line":217,"updated":"2014-08-22 17:39:52.000000000","message":"It is unnecessary.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":214,"context_line":"        :lvid: Local VLAN ID"},{"line_number":215,"context_line":"        \u0027\u0027\u0027"},{"line_number":216,"context_line":"        if physical_network in self.phys_brs:"},{"line_number":217,"context_line":"            vdp_vlan \u003d 0"},{"line_number":218,"context_line":"            lldpad_port \u003d self.lldpad_info.get(physical_network)"},{"line_number":219,"context_line":"            if lldpad_port:"},{"line_number":220,"context_line":"                vdp_vlan \u003d self.get_vlan_from_vdp(lldpad_port, net_uuid,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_fffa2a42","line":217,"in_reply_to":"1abeadc6_0ff6018f","updated":"2014-08-25 07:41:06.000000000","message":"Done","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            #RPC call to store the VDP VLAN in ML2 DB. TODO(padkrish)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            lmsg \u003d \u0027provision_local_vlan: add_flow for %(pn)s %(vlan)s\u0027"},{"line_number":242,"context_line":"            LOG.debug(lmsg % {\u0027pn\u0027: physical_network, \u0027vlan\u0027: vdp_vlan})"},{"line_number":243,"context_line":"            # outbound"},{"line_number":244,"context_line":"            br \u003d self.phys_brs[physical_network]"},{"line_number":245,"context_line":"            br.add_flow(priority\u003d4,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_cf37a94b","line":242,"updated":"2014-08-22 17:39:52.000000000","message":"Use , instead of %.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":239,"context_line":"            #RPC call to store the VDP VLAN in ML2 DB. TODO(padkrish)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"            lmsg \u003d \u0027provision_local_vlan: add_flow for %(pn)s %(vlan)s\u0027"},{"line_number":242,"context_line":"            LOG.debug(lmsg % {\u0027pn\u0027: physical_network, \u0027vlan\u0027: vdp_vlan})"},{"line_number":243,"context_line":"            # outbound"},{"line_number":244,"context_line":"            br \u003d self.phys_brs[physical_network]"},{"line_number":245,"context_line":"            br.add_flow(priority\u003d4,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_df848eb3","line":242,"in_reply_to":"1abeadc6_cf37a94b","updated":"2014-08-25 07:41:06.000000000","message":"Done","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                                  self.root_helper))"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    def get_vlan_from_vdp(self, lldpad_port, net_uuid, port, seg_id):"},{"line_number":90,"context_line":"        \u0027\u0027\u0027Send vNIC UP event to VDP and get the associated VLAN for a"},{"line_number":91,"context_line":"        network."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        :param lldpad_port: a lldpad.LldpadDriver object."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_45209a9b","line":90,"updated":"2014-09-08 21:47:20.000000000","message":"nit: PEP8 summary line, one line with period, and then additional info can be placed on additional lines (with a blank line in-between summary and rest).","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":107,"context_line":"                                                new_network\u003dTrue,"},{"line_number":108,"context_line":"                                                vsw_cb_fn\u003dself.vdp_vlan_change,"},{"line_number":109,"context_line":"                                                vsw_cb_data\u003dovs_cb_data)"},{"line_number":110,"context_line":"        LOG.debug(\u0027get_vlan_from_vdp: vdp_vlan \u003d %s\u0027, (vdp_vlan))"},{"line_number":111,"context_line":"        return vdp_vlan"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"    def send_vdp_port_event(self, port, net_uuid, physical_network,"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_054db272","line":110,"updated":"2014-09-08 21:47:20.000000000","message":"extra parens not needed","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":122,"context_line":"        \u0027\u0027\u0027"},{"line_number":123,"context_line":"        lldpad_port \u003d self.lldpad_info.get(physical_network)"},{"line_number":124,"context_line":"        if not lldpad_port:"},{"line_number":125,"context_line":"            LOG.error(_(\"There is no LLDPad port available.\"))"},{"line_number":126,"context_line":"            return"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        ovs_cb_data \u003d {\u0027obj\u0027: self, \u0027port\u0027: port, \u0027net_uuid\u0027: net_uuid}"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_8540c236","line":125,"updated":"2014-09-08 21:47:20.000000000","message":"Can use _LE() hints in this module too.","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        if n_utils.is_valid_vlan_tag(exist_vdp_vlan):"},{"line_number":173,"context_line":"            #Clear the old flows"},{"line_number":174,"context_line":"            # outbound"},{"line_number":175,"context_line":"            br.delete_flows(in_port\u003dself.phys_ofports[physical_network],"},{"line_number":176,"context_line":"                            dl_vlan\u003dlvid)"},{"line_number":177,"context_line":"            # inbound"},{"line_number":178,"context_line":"            self.int_br.delete_flows(in_port\u003dself."}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_65cf5eb1","line":175,"updated":"2014-09-08 21:47:20.000000000","message":"The delete and add code in L175-192 are very similar to L242+ and L269+. would it worth it to make two functions (with a descriptive names) and use in these places?","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                if lvm:"},{"line_number":225,"context_line":"                    self.available_local_vlans.add(lvm.vlan)"},{"line_number":226,"context_line":"                LOG.error(_(\"Cannot provision VDP Overlay network for\""},{"line_number":227,"context_line":"                            \" net-id\u003d%(net_uuid)s - Invalid \""},{"line_number":228,"context_line":"                            \"VLAN %(vlan)s\"),"},{"line_number":229,"context_line":"                          {\u0027net_uuid\u0027: net_uuid,"},{"line_number":230,"context_line":"                           \u0027vlan\u0027: vdp_vlan})"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_45a5fa02","line":227,"updated":"2014-09-08 21:47:20.000000000","message":"Nit: for readability, can put all spaces for continuation on end of line (previous) line.","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"}],"neutron/plugins/openvswitch/common/config.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                       \"outgoing IP packet carrying GRE/VXLAN tunnel\")),"},{"line_number":103,"context_line":"    cfg.BoolOpt(\u0027enable_distributed_routing\u0027, default\u003dFalse,"},{"line_number":104,"context_line":"                help\u003d_(\"Make the l2 agent run in DVR mode \")),"},{"line_number":105,"context_line":"    cfg.BoolOpt(\u0027vdp_802_1_qbg\u0027, default\u003dFalse,"},{"line_number":106,"context_line":"                help\u003d_(\"Configuration flag for VDP support.\""},{"line_number":107,"context_line":"                       \"Controls if vNIC events need to be reported to \""},{"line_number":108,"context_line":"                       \"VDP protocol, which is a part of IEEE 802.1QBG.\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_af40ad07","line":105,"updated":"2014-08-22 17:39:52.000000000","message":"Is there a relationship between vdp_802_1_qbg and host_overlay?","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":102,"context_line":"                       \"outgoing IP packet carrying GRE/VXLAN tunnel\")),"},{"line_number":103,"context_line":"    cfg.BoolOpt(\u0027enable_distributed_routing\u0027, default\u003dFalse,"},{"line_number":104,"context_line":"                help\u003d_(\"Make the l2 agent run in DVR mode \")),"},{"line_number":105,"context_line":"    cfg.BoolOpt(\u0027vdp_802_1_qbg\u0027, default\u003dFalse,"},{"line_number":106,"context_line":"                help\u003d_(\"Configuration flag for VDP support.\""},{"line_number":107,"context_line":"                       \"Controls if vNIC events need to be reported to \""},{"line_number":108,"context_line":"                       \"VDP protocol, which is a part of IEEE 802.1QBG.\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_32e85916","line":105,"in_reply_to":"1abeadc6_af40ad07","updated":"2014-08-25 07:41:06.000000000","message":"Not actually. VDP\u0027s functionality is to let the network know about virtual port (vNic) added/deleted. We use VDP so that network can do automatic provisioning. Network overlay, as you know, is for scaling more than 4K networks, and is performed by the network. AFAIK, this is a more practical use-case for VDP to be used in conjunction with network overlays. \n\nYou can also use VDP for host overlays and let the network know that a new vNIC that will use a particular Segment (VNI in VXLAN header) is up. In those cases, no VLAN need to be returned by switch. I don\u0027t have a use-case for this scenario. But, it\u0027s possible in theory, which is why this comment.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"}],"neutron/plugins/openvswitch/common/constants.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"a525afe43a47df55218b900eed2366f8f09f9821","unresolved":false,"context_lines":[{"line_number":83,"context_line":"LLDPAD_LOC_VETH_PORT \u003d \"lldp_loc_v_\""},{"line_number":84,"context_line":"NCB_DMAC \u003d \"01:80:c2:00:00:00\""},{"line_number":85,"context_line":"LLDP_ETYPE \u003d 0x88cc"},{"line_number":86,"context_line":"VDP22_ETYPE \u003d 0x8940"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_7202fa0a","line":86,"updated":"2014-08-22 17:39:52.000000000","message":"I think it is better to move these three variable to lldpad constants. It is not specific to ovs-agent.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"95e3d4939dc2a6aaf110b5c2b2863ca3d6c58305","unresolved":false,"context_lines":[{"line_number":83,"context_line":"LLDPAD_LOC_VETH_PORT \u003d \"lldp_loc_v_\""},{"line_number":84,"context_line":"NCB_DMAC \u003d \"01:80:c2:00:00:00\""},{"line_number":85,"context_line":"LLDP_ETYPE \u003d 0x88cc"},{"line_number":86,"context_line":"VDP22_ETYPE \u003d 0x8940"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_322bf934","line":86,"in_reply_to":"1abeadc6_7202fa0a","updated":"2014-08-25 07:41:06.000000000","message":"Actually, these are used for adding flows by OVS agent and are applicable when OVS is the virtual switch. The lldpad module does not use any of the above. lldpad_constants have constants values specific to VDP protocol, so adding the first two constants may not be appropriate. Strictly, i should have a new file for ovs_vdp_constants. But, am not sure, we need to have another file for a few constants.","commit_id":"3526f8aa9c9907c1a898306adea016ac7b4ff8cb"}],"neutron/tests/unit/openvswitch/test_ovs_neutron_agent.py":[{"author":{"_account_id":8645,"name":"Trinath Somanchi","email":"trinath.somanchi@freescale.com","username":"trinaths"},"change_message_id":"c3f8cfc0c81c098a067551d3941d0c849bdf74cb","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                     actions\u003d\"mod_vlan_vid:%s\""},{"line_number":223,"context_line":"                                                     \",normal\" %"},{"line_number":224,"context_line":"                                                     new_local_vlan)]"},{"line_number":225,"context_line":"            parent.assert_has_calls(expected_calls, any_order\u003dFalse)"},{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            self.assertTrue(lldpad.send_vdp_vnic_up)"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_18eef322","line":225,"updated":"2014-08-26 06:45:28.000000000","message":"Doubt: Will the expected_calls be called one time atleast. How can you check these are called multiple times by error?","commit_id":"568e140bf3fe1f33a97afabbc66b92d0c46c9bb2"},{"author":{"_account_id":11241,"name":"Padmanabhan Krish","email":"kprad1@yahoo.com","username":"padkrish"},"change_message_id":"5845f1201174bc01c68128e71a3ef1655e3b9942","unresolved":false,"context_lines":[{"line_number":222,"context_line":"                                                     actions\u003d\"mod_vlan_vid:%s\""},{"line_number":223,"context_line":"                                                     \",normal\" %"},{"line_number":224,"context_line":"                                                     new_local_vlan)]"},{"line_number":225,"context_line":"            parent.assert_has_calls(expected_calls, any_order\u003dFalse)"},{"line_number":226,"context_line":"        else:"},{"line_number":227,"context_line":"            self.assertTrue(lldpad.send_vdp_vnic_up)"},{"line_number":228,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_181d1374","line":225,"in_reply_to":"1abeadc6_18eef322","updated":"2014-08-26 07:33:00.000000000","message":"Yes, if it\u0027s not called, assert will throw an error. This will be called when called by test_port_bound_vdp_provision_new_flow as shown below. If these are called with incorrect arguments, this will also throw an error.","commit_id":"568e140bf3fe1f33a97afabbc66b92d0c46c9bb2"},{"author":{"_account_id":6659,"name":"Paul Michali","email":"pc@michali.net","username":"pcm"},"change_message_id":"4ae6aa2a18fd7564e0793049f906ad494b28a974","unresolved":false,"context_lines":[{"line_number":1041,"context_line":"                                                     actions\u003d\"output:%s\" %"},{"line_number":1042,"context_line":"                                                     addport_ret)]"},{"line_number":1043,"context_line":"                parent.assert_has_calls(expected_calls, any_order\u003dFalse)"},{"line_number":1044,"context_line":"                self.assertEqual(self.agent.lldpad_info[\"ethd\"],"},{"line_number":1045,"context_line":"                                lldpad)"},{"line_number":1046,"context_line":""},{"line_number":1047,"context_line":"    def test_get_peer_name(self):"}],"source_content_type":"text/x-python","patch_set":10,"id":"fa98f980_65e2fe04","line":1044,"updated":"2014-09-08 21:47:20.000000000","message":"should have expected, actual arg ordering.","commit_id":"c7aed652ba35d4a85d10eaad3fffd76333e48609"}]}
