)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"3c8087a0a33a9ca1cd5491201cddc3094d01ba7b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"bridge on compute node. This change will add qbr linux bridge when"},{"line_number":13,"context_line":"xenserver as hypervisor"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint xenserver-give-support-on-neutron-security-group"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact: /etc/modprobe.d/blacklist-bridge file in dom0 should be"},{"line_number":18,"context_line":"    deleted since it prevent loading linux bridge module in dom0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a8ffd7b_e92a392f","line":15,"updated":"2015-11-30 14:37:25.000000000","message":"Blueprint needs to be reviewed as a spec-less blueprint - see https://etherpad.openstack.org/p/mitaka-nova-spec-review-tracking\n\nI\u0027d also like more details in the spec explaining how things are going to be modified, and point to the libvirt code that we\u0027re using as reference.","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8599a0b2390cd7ee47267133785fb6dd9a939ed4","unresolved":false,"context_lines":[{"line_number":12,"context_line":"bridge on compute node. This change will add qbr linux bridge when"},{"line_number":13,"context_line":"xenserver as hypervisor"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Implements: blueprint xenserver-give-support-on-neutron-security-group"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"DocImpact: /etc/modprobe.d/blacklist-bridge file in dom0 should be"},{"line_number":18,"context_line":"    deleted since it prevent loading linux bridge module in dom0"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a8ffd7b_f4f7528a","line":15,"in_reply_to":"9a8ffd7b_e92a392f","updated":"2015-12-01 06:57:42.000000000","message":"Got it, I will add explanations for the implementation","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"}],"nova/virt/xenapi/vif.py":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"3c8087a0a33a9ca1cd5491201cddc3094d01ba7b","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return ((\"qvb%s\" % iface_id)[:network_model.NIC_NAME_LEN],"},{"line_number":230,"context_line":"                (\"qvo%s\" % iface_id)[:network_model.NIC_NAME_LEN])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _device_exists(self, device):"},{"line_number":233,"context_line":"        \"\"\"Check if ethernet device exists.\"\"\""},{"line_number":234,"context_line":"        return self._session.call_plugin_serialized("},{"line_number":235,"context_line":"                \u0027xenhost\u0027, \u0027ethernet_device_exist\u0027, device)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_494a65ae","line":232,"updated":"2015-11-30 14:37:25.000000000","message":"Can\u0027t we use an ip command to check this?\ni.e:\ntry:\n  self._exec_dom0_cmd([\u0027ip\u0027, \u0027link\u0027, \u0027show\u0027, dev])\n  return True\nexcept:\n  # Swallow exception from plugin, since this indicates the device doesn\u0027t exist\n  return False","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8599a0b2390cd7ee47267133785fb6dd9a939ed4","unresolved":false,"context_lines":[{"line_number":229,"context_line":"        return ((\"qvb%s\" % iface_id)[:network_model.NIC_NAME_LEN],"},{"line_number":230,"context_line":"                (\"qvo%s\" % iface_id)[:network_model.NIC_NAME_LEN])"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def _device_exists(self, device):"},{"line_number":233,"context_line":"        \"\"\"Check if ethernet device exists.\"\"\""},{"line_number":234,"context_line":"        return self._session.call_plugin_serialized("},{"line_number":235,"context_line":"                \u0027xenhost\u0027, \u0027ethernet_device_exist\u0027, device)"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_f43e7228","line":232,"in_reply_to":"9a8ffd7b_494a65ae","updated":"2015-12-01 06:57:42.000000000","message":"I will have a try and then remove the related function in xenhost","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"},{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"3c8087a0a33a9ca1cd5491201cddc3094d01ba7b","unresolved":false,"context_lines":[{"line_number":271,"context_line":"            self._exec_dom0_cmd(cmd_args)"},{"line_number":272,"context_line":"            cmd_args \u003d [\u0027brctl\u0027, \u0027stp\u0027, linux_br_name, \u0027off\u0027]"},{"line_number":273,"context_line":"            self._exec_dom0_cmd(cmd_args)"},{"line_number":274,"context_line":"            # TODO(huanxie): multicast_snooping is not set"},{"line_number":275,"context_line":"            cmd_args \u003d [\u0027ip\u0027, \u0027link\u0027, \u0027set\u0027, linux_br_name, \u0027up\u0027]"},{"line_number":276,"context_line":"            self._exec_dom0_cmd(cmd_args)"},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_89d7edbe","line":274,"updated":"2015-11-30 14:37:25.000000000","message":"I\u0027m not sure what the purpose of this comment is?  Do we need multicast snooping?","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"a69593d8ea30d56538082465c373995901bdd1d4","unresolved":false,"context_lines":[{"line_number":206,"context_line":""},{"line_number":207,"context_line":"            # delete tap port in linux bridge qbrxxx"},{"line_number":208,"context_line":"            cmd_args \u003d [\u0027brctl\u0027, \u0027delif\u0027, qbr_name, tap_name]"},{"line_number":209,"context_line":"            self._exec_dom0_cmd(cmd_args)"},{"line_number":210,"context_line":"            self._delete_net_dev(tap_name)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            # delete qvb port in linux bridge qbrxxx"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a8ffd7b_806d56ce","line":209,"updated":"2015-12-01 08:37:33.000000000","message":"should catch the exception in case this command got failed, because if  it raise exception here, the left cannot be deleted","commit_id":"2888db4c6684fc5bf00e76c7da25954cc8eda8a9"}],"plugins/xenserver/xenapi/etc/xapi.d/plugins/xenhost":[{"author":{"_account_id":6735,"name":"Bob Ball","email":"bob.ball@citrix.com","username":"bob-ball"},"change_message_id":"3c8087a0a33a9ca1cd5491201cddc3094d01ba7b","unresolved":false,"context_lines":[{"line_number":485,"context_line":"            \"get_config\": get_config,"},{"line_number":486,"context_line":"            \"set_config\": set_config,"},{"line_number":487,"context_line":"            \"iptables_config\": iptables_config,"},{"line_number":488,"context_line":"            \"bridge_config\": bridge_config,"},{"line_number":489,"context_line":"            \"host_uptime\": host_uptime})"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9a8ffd7b_e910f9ad","line":488,"updated":"2015-11-30 14:37:25.000000000","message":"We can\u0027t change these names.  It reminds me that actually in Jianghua\u0027s change we must update the plugin version.  So while we\u0027re doing that, let\u0027s give the function a name that makes sense in both contexts.","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"8599a0b2390cd7ee47267133785fb6dd9a939ed4","unresolved":false,"context_lines":[{"line_number":485,"context_line":"            \"get_config\": get_config,"},{"line_number":486,"context_line":"            \"set_config\": set_config,"},{"line_number":487,"context_line":"            \"iptables_config\": iptables_config,"},{"line_number":488,"context_line":"            \"bridge_config\": bridge_config,"},{"line_number":489,"context_line":"            \"host_uptime\": host_uptime})"}],"source_content_type":"application/octet-stream","patch_set":2,"id":"9a8ffd7b_d4c00e2d","line":488,"in_reply_to":"9a8ffd7b_e910f9ad","updated":"2015-12-01 06:57:42.000000000","message":"OK, I will change back to ovs_config and that change will make a proper name for this function, thanks a lot.","commit_id":"6d304f5ee4d905da26880d09679b3d0870a95d30"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"75e1ee8c7bf061f99b52f5c9da11e5edd609d650","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"ALLOWED_NETWORK_CMDS \u003d {"},{"line_number":337,"context_line":"    # allowed cmds to config OVS bridge"},{"line_number":338,"context_line":"    \u0027ovs_add_patch_port\u0027: _ovs_add_patch_port,"},{"line_number":339,"context_line":"    \u0027ovs_del_port\u0027: _ovs_del_port,"},{"line_number":340,"context_line":"    \u0027ovs_del_br\u0027: _ovs_del_br,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"ba0121b8_ea6c7e9e","line":337,"updated":"2016-03-29 05:17:55.000000000","message":"add similar comments for other types of commands.","commit_id":"23250bbe3125804c970950b2dd68843da3862484"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"375958a59169092f07d2b8c946655d422abd578e","unresolved":false,"context_lines":[{"line_number":334,"context_line":""},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"ALLOWED_NETWORK_CMDS \u003d {"},{"line_number":337,"context_line":"    # allowed cmds to config OVS bridge"},{"line_number":338,"context_line":"    \u0027ovs_add_patch_port\u0027: _ovs_add_patch_port,"},{"line_number":339,"context_line":"    \u0027ovs_del_port\u0027: _ovs_del_port,"},{"line_number":340,"context_line":"    \u0027ovs_del_br\u0027: _ovs_del_br,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"1a122d0e_6cc27686","line":337,"in_reply_to":"ba0121b8_ea6c7e9e","updated":"2016-04-21 03:19:56.000000000","message":"Done","commit_id":"23250bbe3125804c970950b2dd68843da3862484"},{"author":{"_account_id":17920,"name":"Jianghua Wang","email":"jianghua.wang@citrix.com","username":"wjhfresh"},"change_message_id":"75e1ee8c7bf061f99b52f5c9da11e5edd609d650","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    \u0027ovs_del_port\u0027: _ovs_del_port,"},{"line_number":340,"context_line":"    \u0027ovs_del_br\u0027: _ovs_del_br,"},{"line_number":341,"context_line":"    \u0027ovs_set_if_external_id\u0027: _ovs_set_if_external_id,"},{"line_number":342,"context_line":"    \u0027ovs_add_port\u0027: _ovs_add_port,"},{"line_number":343,"context_line":"    \u0027ip_link_get_dev\u0027: _ip_link_get_dev,"},{"line_number":344,"context_line":"    \u0027ip_link_del_dev\u0027: _ip_link_del_dev,"},{"line_number":345,"context_line":"    \u0027ip_link_add_veth_pair\u0027: _ip_link_add_veth_pair,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"ba0121b8_8af6a2d5","line":342,"updated":"2016-03-29 05:17:55.000000000","message":"suggest sort these commands.","commit_id":"23250bbe3125804c970950b2dd68843da3862484"},{"author":{"_account_id":17922,"name":"Huan Xie","email":"huan.xie@citrix.com","username":"huan"},"change_message_id":"375958a59169092f07d2b8c946655d422abd578e","unresolved":false,"context_lines":[{"line_number":339,"context_line":"    \u0027ovs_del_port\u0027: _ovs_del_port,"},{"line_number":340,"context_line":"    \u0027ovs_del_br\u0027: _ovs_del_br,"},{"line_number":341,"context_line":"    \u0027ovs_set_if_external_id\u0027: _ovs_set_if_external_id,"},{"line_number":342,"context_line":"    \u0027ovs_add_port\u0027: _ovs_add_port,"},{"line_number":343,"context_line":"    \u0027ip_link_get_dev\u0027: _ip_link_get_dev,"},{"line_number":344,"context_line":"    \u0027ip_link_del_dev\u0027: _ip_link_del_dev,"},{"line_number":345,"context_line":"    \u0027ip_link_add_veth_pair\u0027: _ip_link_add_veth_pair,"}],"source_content_type":"application/octet-stream","patch_set":12,"id":"1a122d0e_ccbd8a03","line":342,"in_reply_to":"ba0121b8_8af6a2d5","updated":"2016-04-21 03:19:56.000000000","message":"Done","commit_id":"23250bbe3125804c970950b2dd68843da3862484"}]}
