)]}'
{"neutron/agent/linux/bridge_lib.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"90c3a98bb583f5807b9140554fb3c9c31d1818ce","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def disable_stp(self):"},{"line_number":109,"context_line":"        return self._brctl([\u0027stp\u0027, self.name, \u0027off\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def disable_ipv6(self):"},{"line_number":112,"context_line":"        cmd \u003d \u0027net.ipv6.conf.%s.disable_ipv6\u003d1\u0027 % self.name"},{"line_number":113,"context_line":"        return self._sysctl([cmd])"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_247675a4","side":"PARENT","line":111,"updated":"2016-02-06 11:55:20.000000000","message":"this is a public method and it may be accessed by decomposed plugins. In theory you should not delete this and you should provide a deprecation warning","commit_id":"c4ec9729873cc57466c6b02221a28b20eed8ec83"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"ad117c0e639fba29e6aad1a84bf844fc97177ec2","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    def disable_stp(self):"},{"line_number":109,"context_line":"        return self._brctl([\u0027stp\u0027, self.name, \u0027off\u0027])"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def disable_ipv6(self):"},{"line_number":112,"context_line":"        cmd \u003d \u0027net.ipv6.conf.%s.disable_ipv6\u003d1\u0027 % self.name"},{"line_number":113,"context_line":"        return self._sysctl([cmd])"},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"5a5ae5dd_d554edfe","side":"PARENT","line":111,"in_reply_to":"5a5ae5dd_247675a4","updated":"2016-02-06 15:57:37.000000000","message":"Agreed, but I moved the method into the base IPDevice class. So it is still available to callers.","commit_id":"c4ec9729873cc57466c6b02221a28b20eed8ec83"}],"neutron/agent/linux/ip_lib.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9c10c620e4e383a599e3e533a6f4a47a0d7b19c","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        elif port:"},{"line_number":236,"context_line":"            raise exceptions.NetworkVxlanPortRangeError(vxlan_range\u003dport)"},{"line_number":237,"context_line":"        self._as_root([], \u0027link\u0027, cmd)"},{"line_number":238,"context_line":"        return IPDevice(name, namespace\u003dself.namespace)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @classmethod"},{"line_number":241,"context_line":"    def get_namespaces(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_45ff56aa","line":238,"updated":"2016-01-19 21:16:54.000000000","message":"nit: please avoid other unrelated changes","commit_id":"ab135edc6da910ef30c5e1a9e3897f28f97e0989"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"6549280f5ba249349bcb8446a205acc5255e1772","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        elif port:"},{"line_number":236,"context_line":"            raise exceptions.NetworkVxlanPortRangeError(vxlan_range\u003dport)"},{"line_number":237,"context_line":"        self._as_root([], \u0027link\u0027, cmd)"},{"line_number":238,"context_line":"        return IPDevice(name, namespace\u003dself.namespace)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    @classmethod"},{"line_number":241,"context_line":"    def get_namespaces(cls):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_3f2106fc","line":238,"in_reply_to":"ba63e191_45ff56aa","updated":"2016-01-20 01:03:24.000000000","message":"Done","commit_id":"ab135edc6da910ef30c5e1a9e3897f28f97e0989"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"72e6dbe2f30359363cb9441cb05fe53f8b6ad2a1","unresolved":false,"context_lines":[{"line_number":933,"context_line":""},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"def vlan_in_use(segmentation_id, namespace\u003dNone):"},{"line_number":936,"context_line":"    \"\"\"Return True if VLAN ID is in use by an interface, else False.\"\"\""},{"line_number":937,"context_line":"    ip_wrapper \u003d IPWrapper(namespace\u003dnamespace)"},{"line_number":938,"context_line":"    interfaces \u003d ip_wrapper.netns.execute([\"ip\", \"-d\", \"link\", \"list\"],"},{"line_number":939,"context_line":"                                          check_exit_code\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"5a5ae5dd_061ccabf","line":936,"updated":"2016-02-05 10:19:19.000000000","message":"missed the \u0027in\u0027 keywork :)","commit_id":"c93c0df57699368ebcb02b6a82f8a9b0089538b9"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"bd4f9adf75aaaa0aa746ff2021bfe40874c52d36","unresolved":false,"context_lines":[{"line_number":933,"context_line":""},{"line_number":934,"context_line":""},{"line_number":935,"context_line":"def vlan_in_use(segmentation_id, namespace\u003dNone):"},{"line_number":936,"context_line":"    \"\"\"Return True if VLAN ID is in use by an interface, else False.\"\"\""},{"line_number":937,"context_line":"    ip_wrapper \u003d IPWrapper(namespace\u003dnamespace)"},{"line_number":938,"context_line":"    interfaces \u003d ip_wrapper.netns.execute([\"ip\", \"-d\", \"link\", \"list\"],"},{"line_number":939,"context_line":"                                          check_exit_code\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a68dd71_f29bc370","line":936,"updated":"2016-01-27 05:32:52.000000000","message":"this returns a string. where is it True or False?","commit_id":"c93c0df57699368ebcb02b6a82f8a9b0089538b9"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a35d2cdd061a6c3f848491e23bd5b07350ab0b3d","unresolved":false,"context_lines":[{"line_number":937,"context_line":"    ip_wrapper \u003d IPWrapper(namespace\u003dnamespace)"},{"line_number":938,"context_line":"    interfaces \u003d ip_wrapper.netns.execute([\"ip\", \"-d\", \"link\", \"list\"],"},{"line_number":939,"context_line":"                                          check_exit_code\u003dTrue)"},{"line_number":940,"context_line":"    return \u0027802.1Q id %s \u0027 % segmentation_id in interfaces"},{"line_number":941,"context_line":""},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"def vxlan_in_use(segmentation_id, namespace\u003dNone):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_9e463cbe","line":940,"updated":"2016-01-27 16:47:54.000000000","message":"This returns True/False\n\n\u003e\u003e\u003e \u0027foo 1234\u0027 in \u0027eth0: foo 1234\u0027\nTrue","commit_id":"c93c0df57699368ebcb02b6a82f8a9b0089538b9"}],"neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"a9c10c620e4e383a599e3e533a6f4a47a0d7b19c","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                        LOG.error(_LE(\"Unable to create VLAN interface for \""},{"line_number":255,"context_line":"                                      \"VLAN ID %s because it is in use by \""},{"line_number":256,"context_line":"                                      \"another interface.\"), vlan_id)"},{"line_number":257,"context_line":"                        return None"},{"line_number":258,"context_line":"            int_vlan.disable_ipv6()"},{"line_number":259,"context_line":"            int_vlan.link.set_up()"},{"line_number":260,"context_line":"            LOG.debug(\"Done creating subinterface %s\", interface)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_82f46487","line":257,"updated":"2016-01-19 21:16:54.000000000","message":"nit: None not required here","commit_id":"ab135edc6da910ef30c5e1a9e3897f28f97e0989"},{"author":{"_account_id":11255,"name":"Dustin Lundquist","username":"dustin.lundquist","inactive":true},"change_message_id":"6549280f5ba249349bcb8446a205acc5255e1772","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                        LOG.error(_LE(\"Unable to create VLAN interface for \""},{"line_number":255,"context_line":"                                      \"VLAN ID %s because it is in use by \""},{"line_number":256,"context_line":"                                      \"another interface.\"), vlan_id)"},{"line_number":257,"context_line":"                        return None"},{"line_number":258,"context_line":"            int_vlan.disable_ipv6()"},{"line_number":259,"context_line":"            int_vlan.link.set_up()"},{"line_number":260,"context_line":"            LOG.debug(\"Done creating subinterface %s\", interface)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba63e191_bf83b6cb","line":257,"in_reply_to":"ba63e191_82f46487","updated":"2016-01-20 01:03:24.000000000","message":"Done","commit_id":"ab135edc6da910ef30c5e1a9e3897f28f97e0989"}]}
