)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"7ec85d0d773642e07603abcfc366b18f1aa81686","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce test of IptablesManager using filtering of ICMP packets in"},{"line_number":10,"context_line":"namespaces."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I90ab0d397780247de619bd90f5febd0e59b84fc7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa98f980_7fa7f44f","line":11,"updated":"2014-09-01 15:21:16.000000000","message":"Partial-bug: #1243216","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4b8812a91a1dfe226826ce5c5a90ebb2418ee3e0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Introduce test of IptablesManager using filtering of ICMP packets in"},{"line_number":10,"context_line":"namespaces."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I90ab0d397780247de619bd90f5febd0e59b84fc7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"fa98f980_a5922655","line":11,"in_reply_to":"fa98f980_7fa7f44f","updated":"2014-09-01 16:33:27.000000000","message":"Done","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"}],"neutron/tests/functional/agent/linux/test_iptables.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"da3ae2d069af3403dc1f4490df3019431aee1329","unresolved":false,"context_lines":[{"line_number":23,"context_line":"DEST_VETH_NAME \u003d \u0027destination\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class IptablesManagerTestCase(base.BaseLinuxTestCase):"},{"line_number":27,"context_line":"    SRC_ADDRESS \u003d \u0027192.168.0.1\u0027"},{"line_number":28,"context_line":"    DST_ADDRESS \u003d \u0027192.168.0.2\u0027"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_1ba8fa1e","line":26,"updated":"2014-08-29 19:42:30.000000000","message":"Consider separating out the namespace/ip helper methods from the test class.  Maybe into the parent class or a new one specific to namespace/ip testing?","commit_id":"12587117faac52ce93b6336d524b2c37bce21a74"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bd2cb831e6c83a7d8a16ab477c104e7540da683d","unresolved":false,"context_lines":[{"line_number":23,"context_line":"DEST_VETH_NAME \u003d \u0027destination\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class IptablesManagerTestCase(base.BaseLinuxTestCase):"},{"line_number":27,"context_line":"    SRC_ADDRESS \u003d \u0027192.168.0.1\u0027"},{"line_number":28,"context_line":"    DST_ADDRESS \u003d \u0027192.168.0.2\u0027"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_9bd83e55","line":26,"in_reply_to":"1abeadc6_1ba8fa1e","updated":"2014-09-01 08:53:23.000000000","message":"Done","commit_id":"12587117faac52ce93b6336d524b2c37bce21a74"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"da3ae2d069af3403dc1f4490df3019431aee1329","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def setUp(self):"},{"line_number":31,"context_line":"        super(IptablesManagerTestCase, self).setUp()"},{"line_number":32,"context_line":"        self.check_sudo_enabled()"},{"line_number":33,"context_line":"        self.src_ns \u003d None"},{"line_number":34,"context_line":"        self.dst_ns \u003d None"},{"line_number":35,"context_line":"        self.addCleanup(self.cleanup)"},{"line_number":36,"context_line":"        self._prepare_veth_pairs()"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_bbd2a6ce","line":33,"updated":"2014-08-29 19:42:30.000000000","message":"There\u0027s more coupling between setUp and the prepare method than is necessary.  Consider encapsulating the creation of the veth pairs and their cleanup in the prepare() method and return the ip instances from the method, e.g.\n\n self.src_ns, self_dst_ns \u003d self.prepare()\n\n def prepare():\n  src_ns \u003d ...\n  dst_ns \u003d ..\n  self.addCleanup(namespace.netns.delete, src_ns.namespace)\n  self.addCleanup(namespace.netns.delete, dst_ns.namespace)\n  return src_ns, dest_ns","commit_id":"12587117faac52ce93b6336d524b2c37bce21a74"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bd2cb831e6c83a7d8a16ab477c104e7540da683d","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    def setUp(self):"},{"line_number":31,"context_line":"        super(IptablesManagerTestCase, self).setUp()"},{"line_number":32,"context_line":"        self.check_sudo_enabled()"},{"line_number":33,"context_line":"        self.src_ns \u003d None"},{"line_number":34,"context_line":"        self.dst_ns \u003d None"},{"line_number":35,"context_line":"        self.addCleanup(self.cleanup)"},{"line_number":36,"context_line":"        self._prepare_veth_pairs()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_fbe6aa15","line":33,"in_reply_to":"1abeadc6_bbd2a6ce","updated":"2014-09-01 08:53:23.000000000","message":"Done","commit_id":"12587117faac52ce93b6336d524b2c37bce21a74"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"da3ae2d069af3403dc1f4490df3019431aee1329","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self._set_ip_up(src_veth, \u0027%s/24\u0027 % self.SRC_ADDRESS)"},{"line_number":65,"context_line":"        self._set_ip_up(dst_veth, \u0027%s/24\u0027 % self.DST_ADDRESS)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def _ping_destination(self, attempts\u003d3):"},{"line_number":68,"context_line":"        self.src_ns.netns.execute([\u0027ping\u0027, \u0027-c\u0027, attempts, self.DST_ADDRESS])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_icmp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1abeadc6_3b7a16ba","line":67,"updated":"2014-08-29 19:42:30.000000000","message":"Consider modifying this method to take arguments specifying the namespace to execute from and the destination address.","commit_id":"12587117faac52ce93b6336d524b2c37bce21a74"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bd2cb831e6c83a7d8a16ab477c104e7540da683d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        self._set_ip_up(src_veth, \u0027%s/24\u0027 % self.SRC_ADDRESS)"},{"line_number":65,"context_line":"        self._set_ip_up(dst_veth, \u0027%s/24\u0027 % self.DST_ADDRESS)"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def _ping_destination(self, attempts\u003d3):"},{"line_number":68,"context_line":"        self.src_ns.netns.execute([\u0027ping\u0027, \u0027-c\u0027, attempts, self.DST_ADDRESS])"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def test_icmp(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa98f980_9ba67ec0","line":67,"in_reply_to":"1abeadc6_3b7a16ba","updated":"2014-09-01 08:53:23.000000000","message":"Done","commit_id":"12587117faac52ce93b6336d524b2c37bce21a74"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"7ec85d0d773642e07603abcfc366b18f1aa81686","unresolved":false,"context_lines":[{"line_number":23,"context_line":"DEST_VETH_NAME \u003d \u0027destination\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class IpBase(object):"},{"line_number":27,"context_line":"    SRC_ADDRESS \u003d \u0027192.168.0.1\u0027"},{"line_number":28,"context_line":"    DST_ADDRESS \u003d \u0027192.168.0.2\u0027"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_3fcbac73","line":26,"updated":"2014-09-01 15:21:16.000000000","message":"I\u0027d rather see this extend base.BaseLinuxTestCase so that things like addCleanup actually make sense.  mixins \u003d\u003d evil","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4b8812a91a1dfe226826ce5c5a90ebb2418ee3e0","unresolved":false,"context_lines":[{"line_number":23,"context_line":"DEST_VETH_NAME \u003d \u0027destination\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class IpBase(object):"},{"line_number":27,"context_line":"    SRC_ADDRESS \u003d \u0027192.168.0.1\u0027"},{"line_number":28,"context_line":"    DST_ADDRESS \u003d \u0027192.168.0.2\u0027"},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_05d4d21e","line":26,"in_reply_to":"fa98f980_3fcbac73","updated":"2014-09-01 16:33:27.000000000","message":"Done","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"7ec85d0d773642e07603abcfc366b18f1aa81686","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        device.link.set_up()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @staticmethod"},{"line_number":36,"context_line":"    def _ping_destination(source, destination, attempts\u003d3):"},{"line_number":37,"context_line":"        source.netns.execute([\u0027ping\u0027, \u0027-c\u0027, attempts, destination])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def _create_namespace(self, ip_cmd):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_ff468422","line":36,"updated":"2014-09-01 15:21:16.000000000","message":"source -\u003e namespace / src_namespace / etc\ndestination -\u003e address / dest_address / etc","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4b8812a91a1dfe226826ce5c5a90ebb2418ee3e0","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        device.link.set_up()"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @staticmethod"},{"line_number":36,"context_line":"    def _ping_destination(source, destination, attempts\u003d3):"},{"line_number":37,"context_line":"        source.netns.execute([\u0027ping\u0027, \u0027-c\u0027, attempts, destination])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def _create_namespace(self, ip_cmd):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_45deda40","line":36,"in_reply_to":"fa98f980_ff468422","updated":"2014-09-01 16:33:27.000000000","message":"Done","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"7ec85d0d773642e07603abcfc366b18f1aa81686","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def _ping_destination(source, destination, attempts\u003d3):"},{"line_number":37,"context_line":"        source.netns.execute([\u0027ping\u0027, \u0027-c\u0027, attempts, destination])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def _create_namespace(self, ip_cmd):"},{"line_number":40,"context_line":"        name \u003d \"func-%s\" % uuidutils.generate_uuid()"},{"line_number":41,"context_line":"        namespace \u003d ip_cmd.ensure_namespace(name)"},{"line_number":42,"context_line":"        self.addCleanup(namespace.netns.delete, namespace.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_bf315ca4","line":39,"updated":"2014-09-01 15:21:16.000000000","message":"I\u0027m not sure it\u0027s worth accepting an ip command - they are cheap enough to create on every call.","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4b8812a91a1dfe226826ce5c5a90ebb2418ee3e0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    def _ping_destination(source, destination, attempts\u003d3):"},{"line_number":37,"context_line":"        source.netns.execute([\u0027ping\u0027, \u0027-c\u0027, attempts, destination])"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def _create_namespace(self, ip_cmd):"},{"line_number":40,"context_line":"        name \u003d \"func-%s\" % uuidutils.generate_uuid()"},{"line_number":41,"context_line":"        namespace \u003d ip_cmd.ensure_namespace(name)"},{"line_number":42,"context_line":"        self.addCleanup(namespace.netns.delete, namespace.namespace)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa98f980_a5e4e60d","line":39,"in_reply_to":"fa98f980_bf315ca4","updated":"2014-09-01 16:33:27.000000000","message":"Done","commit_id":"8b13cc45b4ce3509e17ab90480f4194df39a30d9"}]}
