)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"bb13a97959ff0fe70e81c61ea95df29562736dd8","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Ensure that L3 managed port have status ACTIVE"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some plugins may set the port status to DOWN when they are created."},{"line_number":10,"context_line":"This works fine for certain ports. For layer 3 ports this is problematic."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug 1192883"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPn%2F%2FyjU%3D","line":10,"updated":"2013-06-21 07:45:07.000000000","message":"besides the confusing DOWN status, what is the problematic?","commit_id":"f6572a2a52eabbcb2a0978ddc4e01382d352df94"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Ensure that L3 managed port have status ACTIVE"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some plugins may set the port status to DOWN when they are created."},{"line_number":10,"context_line":"This works fine for certain ports. For layer 3 ports this is problematic."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug 1192883"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPn%2F%2FyCU%3D","line":10,"in_reply_to":"AAAAPn%2F%2FyMM%3D","updated":"2013-06-21 12:03:30.000000000","message":"Yes, this is a usability issue. The port is up and running and it is denoted as DOWN.","commit_id":"f6572a2a52eabbcb2a0978ddc4e01382d352df94"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":7,"context_line":"Ensure that L3 managed port have status ACTIVE"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Some plugins may set the port status to DOWN when they are created."},{"line_number":10,"context_line":"This works fine for certain ports. For layer 3 ports this is problematic."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Fixes bug 1192883"},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAPn%2F%2FyMM%3D","line":10,"in_reply_to":"AAAAPn%2F%2FyjU%3D","updated":"2013-06-21 11:20:18.000000000","message":"Don\u0027t you find problematic the fact that the API says a port is down when it actually works?","commit_id":"f6572a2a52eabbcb2a0978ddc4e01382d352df94"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Ports that are attached to additional bridges in the OVS will only update the"},{"line_number":17,"context_line":"port status as ACTIVE. There will be no tags set on the specific ports as this"},{"line_number":18,"context_line":"will break the existing functionality."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NOTE: a separate patch will take place for the floating IP ports"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAPn%2F%2FiXA%3D","line":18,"updated":"2013-06-28 10:10:32.000000000","message":"nit: either move this para above \u0027fixes bug xxx\u0027 or move \u0027fixes bug xxx\u0027 below it.","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Ports that are attached to additional bridges in the OVS will only update the"},{"line_number":17,"context_line":"port status as ACTIVE. There will be no tags set on the specific ports as this"},{"line_number":18,"context_line":"will break the existing functionality."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NOTE: a separate patch will take place for the floating IP ports"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAPn%2F%2FbOY%3D","line":18,"in_reply_to":"AAAAPn%2F%2FiXA%3D","updated":"2013-07-02 08:26:58.000000000","message":"Done","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":17,"context_line":"port status as ACTIVE. There will be no tags set on the specific ports as this"},{"line_number":18,"context_line":"will break the existing functionality."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NOTE: a separate patch will take place for the floating IP ports"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I9993f56963ac704f0f345102d2e8b2d99dd9ad9e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAPn%2F%2FiXI%3D","line":20,"updated":"2013-06-28 10:10:32.000000000","message":"Perhaps let\u0027s start by filing another bug? We usually have a 1:1 mapping between bugs and patches","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":17,"context_line":"port status as ACTIVE. There will be no tags set on the specific ports as this"},{"line_number":18,"context_line":"will break the existing functionality."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"NOTE: a separate patch will take place for the floating IP ports"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Change-Id: I9993f56963ac704f0f345102d2e8b2d99dd9ad9e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAPn%2F%2FbOU%3D","line":20,"in_reply_to":"AAAAPn%2F%2FiXI%3D","updated":"2013-07-02 08:26:58.000000000","message":"https://bugs.launchpad.net/neutron/+bug/1196851","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"}],"neutron/plugins/openvswitch/agent/ovs_neutron_agent.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"7dacfa2f0fa066b9aa91363fbb9ee20c7862b0b3","unresolved":false,"context_lines":[{"line_number":540,"context_line":"        int_br.add_flow(priority\u003d1, actions\u003d\"normal\")"},{"line_number":541,"context_line":"        return int_br"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":544,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":545,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":546,"context_line":"        # Remove all known bridges"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2Fo2Q%3D","line":543,"updated":"2013-07-26 02:37:37.000000000","message":"what  bridge should  we take care of except br-ex?","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":540,"context_line":"        int_br.add_flow(priority\u003d1, actions\u003d\"normal\")"},{"line_number":541,"context_line":"        return int_br"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":544,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":545,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":546,"context_line":"        # Remove all known bridges"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FoUw%3D","line":543,"in_reply_to":"AAAAQn%2F%2Fo2Q%3D","updated":"2013-07-26 06:35:50.000000000","message":"this is just trying to be robust. at the moment there are 2 cases where one can use the layer 3 agent. the first is to set the br-ex and the second is that it will be \u0027\u0027. in the future there may be cases when there are more bridges used. so i just wanted to make sure that we can do this without having to change the code.","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"7dacfa2f0fa066b9aa91363fbb9ee20c7862b0b3","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        # bridge-id\u0027s configured"},{"line_number":555,"context_line":"        br_names \u003d []"},{"line_number":556,"context_line":"        for bridge in ovs_bridges:"},{"line_number":557,"context_line":"            id \u003d ovs_lib.get_bridge_external_bridge_id(self.root_helper,"},{"line_number":558,"context_line":"                                                       bridge)"},{"line_number":559,"context_line":"            if id !\u003d bridge:"},{"line_number":560,"context_line":"                br_names.append(bridge)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2Fo10%3D","line":557,"updated":"2013-07-26 02:37:37.000000000","message":"why we need to exclude the bridges with external bridge-id is set?","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":554,"context_line":"        # bridge-id\u0027s configured"},{"line_number":555,"context_line":"        br_names \u003d []"},{"line_number":556,"context_line":"        for bridge in ovs_bridges:"},{"line_number":557,"context_line":"            id \u003d ovs_lib.get_bridge_external_bridge_id(self.root_helper,"},{"line_number":558,"context_line":"                                                       bridge)"},{"line_number":559,"context_line":"            if id !\u003d bridge:"},{"line_number":560,"context_line":"                br_names.append(bridge)"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FoUY%3D","line":557,"in_reply_to":"AAAAQn%2F%2Fo10%3D","updated":"2013-07-26 06:35:50.000000000","message":"ideally one should set a bridge-id key for the quantum bridges. this is currently done in devstack. this gives us an indication that the bridge is a quantum bridge (sorry neutron)\nthere may be cases when one has more than one bridge (which is an internal bridge and they do not want that bridge to be used with the l2 agent polling \u003d\u003e hence the bridge id.","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"7dacfa2f0fa066b9aa91363fbb9ee20c7862b0b3","unresolved":false,"context_lines":[{"line_number":714,"context_line":"            LOG.info(_(\"Ancillary Port %s added\"), device)"},{"line_number":715,"context_line":"            try:"},{"line_number":716,"context_line":"                self.plugin_rpc.get_device_details(self.context, device,"},{"line_number":717,"context_line":"                                                   self.agent_id)"},{"line_number":718,"context_line":"            except Exception as e:"},{"line_number":719,"context_line":"                LOG.debug(_(\"Unable to get port details for \""},{"line_number":720,"context_line":"                            \"%(device)s: %(e)s\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2Fo2U%3D","line":717,"updated":"2013-07-26 02:37:37.000000000","message":"why not be details \u003d self.plugin_rpc.update_device_up(self.context,\n\t                                                             device,\n\t                                                             self.agent_id)?","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":714,"context_line":"            LOG.info(_(\"Ancillary Port %s added\"), device)"},{"line_number":715,"context_line":"            try:"},{"line_number":716,"context_line":"                self.plugin_rpc.get_device_details(self.context, device,"},{"line_number":717,"context_line":"                                                   self.agent_id)"},{"line_number":718,"context_line":"            except Exception as e:"},{"line_number":719,"context_line":"                LOG.debug(_(\"Unable to get port details for \""},{"line_number":720,"context_line":"                            \"%(device)s: %(e)s\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FoUM%3D","line":717,"in_reply_to":"AAAAQn%2F%2Fo2U%3D","updated":"2013-07-26 06:35:50.000000000","message":"i did not add this as we do not use the deatils. this would have causes a pep8 faulire as an unused variaable","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"7dacfa2f0fa066b9aa91363fbb9ee20c7862b0b3","unresolved":false,"context_lines":[{"line_number":714,"context_line":"            LOG.info(_(\"Ancillary Port %s added\"), device)"},{"line_number":715,"context_line":"            try:"},{"line_number":716,"context_line":"                self.plugin_rpc.get_device_details(self.context, device,"},{"line_number":717,"context_line":"                                                   self.agent_id)"},{"line_number":718,"context_line":"            except Exception as e:"},{"line_number":719,"context_line":"                LOG.debug(_(\"Unable to get port details for \""},{"line_number":720,"context_line":"                            \"%(device)s: %(e)s\"),"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAQn%2F%2FoQo%3D","line":717,"in_reply_to":"AAAAQn%2F%2FoUM%3D","updated":"2013-07-26 07:07:26.000000000","message":"It is confusing use get_device_details to update status of port. get_device_details seems we will get something from server, but we don\u0027t. Instead we update something via it. But, I think we can go with it.","commit_id":"d88ea97228ec8bb38f071c3969fdbb3abf6ab575"}],"neutron/tests/unit/openvswitch/test_ovs_neutron_agent.py":[{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":417,"context_line":"        self.kwargs \u003d ovs_neutron_agent.create_agent_config_map(cfg.CONF)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _test_ancillary_bridges(self, bridges, ancillary):"},{"line_number":420,"context_line":"        device_ids \u003d copy.deepcopy(ancillary)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        def pullup_side_effect(self, *args):"},{"line_number":423,"context_line":"            result \u003d device_ids.pop(0)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2Fp40%3D","line":420,"updated":"2013-07-25 18:01:07.000000000","message":"Deep copy is not necessary with a list of strings.  Can do a simple string copy:\n\ndevice_ids \u003d ancillary[:]","commit_id":"9e9ee5eb6b037368ea6f3c20615d5ab7d8d84a35"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":417,"context_line":"        self.kwargs \u003d ovs_neutron_agent.create_agent_config_map(cfg.CONF)"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":"    def _test_ancillary_bridges(self, bridges, ancillary):"},{"line_number":420,"context_line":"        device_ids \u003d copy.deepcopy(ancillary)"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"        def pullup_side_effect(self, *args):"},{"line_number":423,"context_line":"            result \u003d device_ids.pop(0)"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAQn%2F%2FpoQ%3D","line":420,"in_reply_to":"AAAAQn%2F%2Fp40%3D","updated":"2013-07-25 19:28:37.000000000","message":"Done","commit_id":"9e9ee5eb6b037368ea6f3c20615d5ab7d8d84a35"}],"quantum/common/utils.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"ffc2be2c7d2f081e5ce3fa48d04d93d07aaffa53","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"def is_l3_port(device_owner):"},{"line_number":207,"context_line":"    l3_ports \u003d set([q_const.DEVICE_OWNER_ROUTER_INTF,"},{"line_number":208,"context_line":"                    q_const.DEVICE_OWNER_ROUTER_GW,"},{"line_number":209,"context_line":"                    q_const.DEVICE_OWNER_FLOATINGIP])"},{"line_number":210,"context_line":"    return device_owner in l3_ports"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F0us%3D","line":207,"updated":"2013-06-20 11:30:01.000000000","message":"1. why set?\n\n2. why not make it global var, would not it be evaluated in each call?","commit_id":"70b5e47bea24d6360086fd05cf8d7be6b4bb0456"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"e984596e3040d41c2d56a38166818c7786aec53a","unresolved":false,"context_lines":[{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"def is_l3_port(device_owner):"},{"line_number":207,"context_line":"    l3_ports \u003d set([q_const.DEVICE_OWNER_ROUTER_INTF,"},{"line_number":208,"context_line":"                    q_const.DEVICE_OWNER_ROUTER_GW,"},{"line_number":209,"context_line":"                    q_const.DEVICE_OWNER_FLOATINGIP])"},{"line_number":210,"context_line":"    return device_owner in l3_ports"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPn%2F%2F0tE%3D","line":207,"in_reply_to":"AAAAPn%2F%2F0us%3D","updated":"2013-06-20 11:45:59.000000000","message":"Done","commit_id":"70b5e47bea24d6360086fd05cf8d7be6b4bb0456"}],"quantum/plugins/linuxbridge/lb_quantum_plugin.py":[{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"bb13a97959ff0fe70e81c61ea95df29562736dd8","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":464,"context_line":"            self._ensure_default_security_group_on_port(context, port)"},{"line_number":465,"context_line":"            sgids \u003d self._get_security_groups_on_port(context, port)"},{"line_number":466,"context_line":"            if not utils.is_l3_port(port[\u0027port\u0027][\u0027device_owner\u0027]):"},{"line_number":467,"context_line":"                # Set port status as \u0027DOWN\u0027. This will be updated by agent"},{"line_number":468,"context_line":"                port[\u0027port\u0027][\u0027status\u0027] \u003d q_const.PORT_STATUS_DOWN"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FyjI%3D","line":466,"updated":"2013-06-21 07:45:07.000000000","message":"what about DHCP port?","commit_id":"f6572a2a52eabbcb2a0978ddc4e01382d352df94"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":463,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":464,"context_line":"            self._ensure_default_security_group_on_port(context, port)"},{"line_number":465,"context_line":"            sgids \u003d self._get_security_groups_on_port(context, port)"},{"line_number":466,"context_line":"            if not utils.is_l3_port(port[\u0027port\u0027][\u0027device_owner\u0027]):"},{"line_number":467,"context_line":"                # Set port status as \u0027DOWN\u0027. This will be updated by agent"},{"line_number":468,"context_line":"                port[\u0027port\u0027][\u0027status\u0027] \u003d q_const.PORT_STATUS_DOWN"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FyCI%3D","line":466,"in_reply_to":"AAAAPn%2F%2FyMI%3D","updated":"2013-06-21 12:03:30.000000000","message":"Yes, that is correct the DHCP port status is updated dynamically via the l2 agent.","commit_id":"f6572a2a52eabbcb2a0978ddc4e01382d352df94"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":463,"context_line":"        with session.begin(subtransactions\u003dTrue):"},{"line_number":464,"context_line":"            self._ensure_default_security_group_on_port(context, port)"},{"line_number":465,"context_line":"            sgids \u003d self._get_security_groups_on_port(context, port)"},{"line_number":466,"context_line":"            if not utils.is_l3_port(port[\u0027port\u0027][\u0027device_owner\u0027]):"},{"line_number":467,"context_line":"                # Set port status as \u0027DOWN\u0027. This will be updated by agent"},{"line_number":468,"context_line":"                port[\u0027port\u0027][\u0027status\u0027] \u003d q_const.PORT_STATUS_DOWN"},{"line_number":469,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPn%2F%2FyMI%3D","line":466,"in_reply_to":"AAAAPn%2F%2FyjI%3D","updated":"2013-06-21 11:20:18.000000000","message":"From what I gather the DHCP agent sets is up","commit_id":"f6572a2a52eabbcb2a0978ddc4e01382d352df94"}],"quantum/plugins/openvswitch/agent/ovs_quantum_agent.py":[{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"unresolved":false,"context_lines":[{"line_number":536,"context_line":"        ovs_bridges.remove(integ_br)"},{"line_number":537,"context_line":"        if self.enable_tunneling:"},{"line_number":538,"context_line":"            ovs_bridges.remove(tun_br)"},{"line_number":539,"context_line":"        for physical_network in self.phys_brs:"},{"line_number":540,"context_line":"            br \u003d self.phys_brs[physical_network]"},{"line_number":541,"context_line":"            ovs_bridges.remove(br.br_name)"},{"line_number":542,"context_line":"        ancillary_bridges \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2Fus4%3D","line":539,"updated":"2013-06-24 09:45:10.000000000","message":"consider use the set API \u0027difference_update\u0027:\n\nbr_names \u003d [self.phys_brs[physical_network].br_name for physical_network in self.phys_brs]\n\novs_bridges.difference_update(br_names)","commit_id":"1bbdc1b1fb82e7578416796ed36fe57d92c44c3f"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":536,"context_line":"        ovs_bridges.remove(integ_br)"},{"line_number":537,"context_line":"        if self.enable_tunneling:"},{"line_number":538,"context_line":"            ovs_bridges.remove(tun_br)"},{"line_number":539,"context_line":"        for physical_network in self.phys_brs:"},{"line_number":540,"context_line":"            br \u003d self.phys_brs[physical_network]"},{"line_number":541,"context_line":"            ovs_bridges.remove(br.br_name)"},{"line_number":542,"context_line":"        ancillary_bridges \u003d []"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAPn%2F%2Fuok%3D","line":539,"in_reply_to":"AAAAPn%2F%2Fus4%3D","updated":"2013-06-24 10:12:35.000000000","message":"Done","commit_id":"1bbdc1b1fb82e7578416796ed36fe57d92c44c3f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":533,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":534,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":535,"context_line":"        # Remove all known bridges"},{"line_number":536,"context_line":"        ovs_bridges.remove(integ_br)"},{"line_number":537,"context_line":"        if self.enable_tunneling:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FiSs%3D","line":534,"updated":"2013-06-28 10:10:32.000000000","message":"This is a bit too broad IMHO.\nI had a few bridges I used for doing some tests, and they were included in the ancyllary bridges.\n\nIf you want to keep the code generic (allowing more than just br-ex for possible future developments) perhaps we should use external-ids on the bridge for identifying quantum bridges.","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":533,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":534,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":535,"context_line":"        # Remove all known bridges"},{"line_number":536,"context_line":"        ovs_bridges.remove(integ_br)"},{"line_number":537,"context_line":"        if self.enable_tunneling:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FZxE%3D","line":534,"in_reply_to":"AAAAPn%2F%2FbN8%3D","updated":"2013-07-04 05:17:30.000000000","message":"I have taken a look at this and it may be problematic. I\u0027ll try and explain. Devstack has the br-ex bridge created as follows:\nsudo ovs-vsctl --no-wait -- --may-exist add-br $PUBLIC_BRIDGE\nThis does not have the call:\nsudo ovs-vsctl --no-wait br-set-external-id $bridge bridge-id $bridge\nI am not really why and what that is used for.\nOne option here would be to have a configuration parameter that would have the list of bridges for ancillary ports. What do you think about this?\nIt will move the onus to the user but it would also be a little more clear and could be documented when one if configuring the open vswitch agent and the l3-agent on the same host.","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":531,"context_line":""},{"line_number":532,"context_line":"    def setup_ancillary_bridges(self, integ_br, tun_br):"},{"line_number":533,"context_line":"        \u0027\u0027\u0027Setup ancillary bridges - for example br-ex.\u0027\u0027\u0027"},{"line_number":534,"context_line":"        ovs_bridges \u003d set(ovs_lib.get_bridges(self.root_helper))"},{"line_number":535,"context_line":"        # Remove all known bridges"},{"line_number":536,"context_line":"        ovs_bridges.remove(integ_br)"},{"line_number":537,"context_line":"        if self.enable_tunneling:"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FbN8%3D","line":534,"in_reply_to":"AAAAPn%2F%2FiSs%3D","updated":"2013-07-02 08:26:58.000000000","message":"nice suggestion. i\u0027ll investigate this","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"unresolved":false,"context_lines":[{"line_number":686,"context_line":"                    self.port_dead(port)"},{"line_number":687,"context_line":"        return resync"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"    def treat_ancillary_devices_added(self, devices):"},{"line_number":690,"context_line":"        resync \u003d False"},{"line_number":691,"context_line":"        for device in devices:"},{"line_number":692,"context_line":"            LOG.info(_(\"Ancillary Port %s added\"), device)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FiTU%3D","line":689,"updated":"2013-06-28 10:10:32.000000000","message":"Consider if we need also a treat_ancillary_devices_removed","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"cd19b65b4826d194618704a7bcfb14d5f1065ba1","unresolved":false,"context_lines":[{"line_number":686,"context_line":"                    self.port_dead(port)"},{"line_number":687,"context_line":"        return resync"},{"line_number":688,"context_line":""},{"line_number":689,"context_line":"    def treat_ancillary_devices_added(self, devices):"},{"line_number":690,"context_line":"        resync \u003d False"},{"line_number":691,"context_line":"        for device in devices:"},{"line_number":692,"context_line":"            LOG.info(_(\"Ancillary Port %s added\"), device)"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPn%2F%2FbN4%3D","line":689,"in_reply_to":"AAAAPn%2F%2FiTU%3D","updated":"2013-07-02 08:26:58.000000000","message":"Done","commit_id":"312335a810386b23e408fbd087e2a3566b99fadb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"change_message_id":"7dacfa2f0fa066b9aa91363fbb9ee20c7862b0b3","unresolved":false,"context_lines":[{"line_number":816,"context_line":"                if self.ancillary_brs:"},{"line_number":817,"context_line":"                    port_info \u003d self.update_ancillary_ports(ancillary_ports)"},{"line_number":818,"context_line":"                    if port_info:"},{"line_number":819,"context_line":"                        sync \u003d self.process_ancillary_network_ports(port_info)"},{"line_number":820,"context_line":"                        ancillary_ports \u003d port_info[\u0027current\u0027]"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2FYMI%3D","line":819,"updated":"2013-07-03 00:23:18.000000000","message":"the second assignment will override the first assignment by line 812","commit_id":"d5702832b873f5007c53cd6934d46d4974481b7a"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"unresolved":false,"context_lines":[{"line_number":816,"context_line":"                if self.ancillary_brs:"},{"line_number":817,"context_line":"                    port_info \u003d self.update_ancillary_ports(ancillary_ports)"},{"line_number":818,"context_line":"                    if port_info:"},{"line_number":819,"context_line":"                        sync \u003d self.process_ancillary_network_ports(port_info)"},{"line_number":820,"context_line":"                        ancillary_ports \u003d port_info[\u0027current\u0027]"},{"line_number":821,"context_line":""},{"line_number":822,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPn%2F%2FXRA%3D","line":819,"in_reply_to":"AAAAPn%2F%2FYMI%3D","updated":"2013-07-03 09:17:09.000000000","message":"Correct. Good catch. I\u0027ll fix.","commit_id":"d5702832b873f5007c53cd6934d46d4974481b7a"}]}
