)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3b406fb50e7a4e6bb1aa57059921e9caf704bca3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"14894a51_24728d18","updated":"2022-11-08 08:12:30.000000000","message":"recheck ..","commit_id":"fb4479522590de6482f886efe1fe369b0a10b532"}],"neutron/agent/l3/router_info.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1083,"context_line":"                    break"},{"line_number":1084,"context_line":""},{"line_number":1085,"context_line":"    def _handle_router_snat_rules(self, ex_gw_port, interface_name):"},{"line_number":1086,"context_line":"        #RAH: doing..."},{"line_number":1087,"context_line":"        if self.use_nftables:"},{"line_number":1088,"context_line":"            self._empty_snat_chains(self.nftables_manager)"},{"line_number":1089,"context_line":"            expr \u003d [nftm.RuleStatement(nftm.STATEMENT_JUMP,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c8287698","line":1086,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E265 block comment should start with \u0027# \u0027","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"}],"neutron/agent/linux/nftables_manager.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e24a28aa","line":17,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027collections\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_42c79c13","line":18,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027contextlib\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_22ca6019","line":19,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027difflib\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":"import re"},{"line_number":22,"context_line":"import sys"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron_lib import constants"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_82d1b4d0","line":21,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027re\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"import sys"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron_lib import constants"},{"line_number":25,"context_line":"from neutron_lib import exceptions"},{"line_number":26,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":27,"context_line":"from neutron_lib.utils import runtime"},{"line_number":28,"context_line":"from oslo_concurrency import lockutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_62d458be","line":25,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron_lib.exceptions\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from neutron_lib import constants"},{"line_number":25,"context_line":"from neutron_lib import exceptions"},{"line_number":26,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":27,"context_line":"from neutron_lib.utils import runtime"},{"line_number":28,"context_line":"from oslo_concurrency import lockutils"},{"line_number":29,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_c2da8ce7","line":26,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron_lib.exceptions.l3 as l3_exc\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron_lib import constants"},{"line_number":25,"context_line":"from neutron_lib import exceptions"},{"line_number":26,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":27,"context_line":"from neutron_lib.utils import runtime"},{"line_number":28,"context_line":"from oslo_concurrency import lockutils"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_a2d5d0b9","line":27,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron_lib.utils.runtime\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from neutron_lib import exceptions"},{"line_number":26,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":27,"context_line":"from neutron_lib.utils import runtime"},{"line_number":28,"context_line":"from oslo_concurrency import lockutils"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"},{"line_number":31,"context_line":"from oslo_serialization import jsonutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_02e5a4a8","line":28,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027oslo_concurrency.lockutils\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":27,"context_line":"from neutron_lib.utils import runtime"},{"line_number":28,"context_line":"from oslo_concurrency import lockutils"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"},{"line_number":31,"context_line":"from oslo_serialization import jsonutils"},{"line_number":32,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e2dfc8d3","line":29,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027oslo_config.cfg\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from oslo_concurrency import lockutils"},{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"},{"line_number":31,"context_line":"from oslo_serialization import jsonutils"},{"line_number":32,"context_line":"from oslo_utils import excutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from neutron._i18n import _"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_42f03c68","line":31,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027oslo_serialization.jsonutils\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from oslo_config import cfg"},{"line_number":30,"context_line":"from oslo_log import log as logging"},{"line_number":31,"context_line":"from oslo_serialization import jsonutils"},{"line_number":32,"context_line":"from oslo_utils import excutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from neutron._i18n import _"},{"line_number":35,"context_line":"from neutron.agent.linux import ip_lib"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_22f38075","line":32,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027oslo_utils.excutils\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from oslo_utils import excutils"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from neutron._i18n import _"},{"line_number":35,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":36,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":37,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":38,"context_line":"from neutron.common import _constants as n_const"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_82ea5472","line":35,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron.agent.linux.ip_lib\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from neutron._i18n import _"},{"line_number":35,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":36,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":37,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":38,"context_line":"from neutron.common import _constants as n_const"},{"line_number":39,"context_line":"from neutron.common import utils"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_62ed788a","line":36,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron.agent.linux.iptables_comments as ic\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from neutron._i18n import _"},{"line_number":35,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":36,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":37,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":38,"context_line":"from neutron.common import _constants as n_const"},{"line_number":39,"context_line":"from neutron.common import utils"},{"line_number":40,"context_line":"from neutron.conf.agent import common as config"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_c203ac41","line":37,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron.agent.linux.utils as linux_utils\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":35,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":36,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":37,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":38,"context_line":"from neutron.common import _constants as n_const"},{"line_number":39,"context_line":"from neutron.common import utils"},{"line_number":40,"context_line":"from neutron.conf.agent import common as config"},{"line_number":41,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_a2fe7035","line":38,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron.common._constants as n_const\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":36,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":37,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":38,"context_line":"from neutron.common import _constants as n_const"},{"line_number":39,"context_line":"from neutron.common import utils"},{"line_number":40,"context_line":"from neutron.conf.agent import common as config"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_02fe4436","line":39,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron.common.utils\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":38,"context_line":"from neutron.common import _constants as n_const"},{"line_number":39,"context_line":"from neutron.common import utils"},{"line_number":40,"context_line":"from neutron.conf.agent import common as config"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e2f8684a","line":40,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F401 \u0027neutron.conf.agent.common as config\u0027 imported but unused","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":79,"context_line":"PROTOCOL_HBH \u003d \u0027hbh\u0027"},{"line_number":80,"context_line":"PROTOCOL_MH \u003d \u0027mh\u0027"},{"line_number":81,"context_line":"PROTOCOL_RT \u003d \u0027rt\u0027"},{"line_number":82,"context_line":"# (TODO) PROTOCOL_VLAN: \"\u0026\": [{\"payload\": {\"base\": \"ll\", \"offset\": 0,"},{"line_number":83,"context_line":"#                                          \"len\": 16}},"},{"line_number":84,"context_line":"#                             4095]"},{"line_number":85,"context_line":"PROTOCOL_ARP \u003d \u0027arp\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_4295dce3","line":82,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"def get_binary_name():"},{"line_number":131,"context_line":"    \"\"\"Grab the name of the binary we\u0027re running in.\"\"\""},{"line_number":132,"context_line":"    return os.path.basename(sys.argv[0])[:16].replace(\u0027 \u0027, \u0027_\u0027)"},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_2298a019","line":130,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E303 too many blank lines (3)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    @classmethod"},{"line_number":170,"context_line":"    def from_json(cls, _json):"},{"line_number":171,"context_line":"        if not \u0027nftables\u0027 in _json:"},{"line_number":172,"context_line":"            raise Exception(\u0027JSON object is not a NFTables save file\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        metainfo \u003d None"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_829ff401","line":171,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E713 test for membership should be \u0027not in\u0027","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    @classmethod"},{"line_number":170,"context_line":"    def from_json(cls, _json):"},{"line_number":171,"context_line":"        if not \u0027nftables\u0027 in _json:"},{"line_number":172,"context_line":"            raise Exception(\u0027JSON object is not a NFTables save file\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"        metainfo \u003d None"},{"line_number":175,"context_line":"        tables \u003d []"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_62a2984d","line":172,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":262,"context_line":"        if \u0027mangle\u0027 \u003d\u003d command:"},{"line_number":263,"context_line":"            return RuleMangle.from_json(value)"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        raise Exception(\u0027Rule invalid command %s\u0027 % command)"},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"    def to_json(self):"},{"line_number":268,"context_line":"        chain \u003d (\u0027%s-%s\u0027 % (self.wrap_name, self.chain) if self.wrap else"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_c288ccc7","line":265,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":276,"context_line":"        return rule"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    def is_jump_to_chain(self, chain):"},{"line_number":279,"context_line":"        for _ in (expr for expr in self.expr if"},{"line_number":280,"context_line":"                  type(expr, RuleStatement) and"},{"line_number":281,"context_line":"                  expr.type \u003d\u003d STATEMENT_JUMP and expr.target \u003d\u003d chain):"},{"line_number":282,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_a28310a9","line":279,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F402 import \u0027_\u0027 from line 34 shadowed by loop variable","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":283,"context_line":"        return False"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    def is_jump_conditional(self):"},{"line_number":286,"context_line":"        for _ in (expr for expr in self.expr if"},{"line_number":287,"context_line":"                  type(expr, RuleStatement) and"},{"line_number":288,"context_line":"                  expr.type \u003d\u003d STATEMENT_JUMP and expr.wrapped_jump):"},{"line_number":289,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_0293e4fb","line":286,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: F402 import \u0027_\u0027 from line 34 shadowed by loop variable","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    def __init__(self, op, left, right):"},{"line_number":309,"context_line":"        if op not in OPERATORS:"},{"line_number":310,"context_line":"            raise Exception(\u0027Operator %(op)s not supported\u0027 % {\u0027op\u0027: op})"},{"line_number":311,"context_line":"        self.op \u003d op"},{"line_number":312,"context_line":"        self.left \u003d left"},{"line_number":313,"context_line":"        self.right \u003d right"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e28d08d4","line":310,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    def __init__(self, op, first, second):"},{"line_number":329,"context_line":"        if op not in BINARY_OPERATORS:"},{"line_number":330,"context_line":"            raise Exception(\u0027Binary operator %(op)s not supported\u0027 %"},{"line_number":331,"context_line":"                            {\u0027op\u0027: op})"},{"line_number":332,"context_line":"        self.op \u003d op"},{"line_number":333,"context_line":"        self.first \u003d first"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_42be7c65","line":330,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":368,"context_line":"            return cls(\u0027raw_value\u0027, raw_value\u003d_json)"},{"line_number":369,"context_line":""},{"line_number":370,"context_line":"        if not isinstance(_json, dict):"},{"line_number":371,"context_line":"            raise Exception(\u0027A rule match value should be a raw value \u0027"},{"line_number":372,"context_line":"                            \u0027(int, str) or a dictionary; type: %s\u0027 %"},{"line_number":373,"context_line":"                            type(_json))"},{"line_number":374,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_22c1c0e5","line":371,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            second \u003d RuleMatchValue.from_json(_json[command][1])"},{"line_number":398,"context_line":"            return RuleMatchBinaryOperator(command, first, second)"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"        raise Exception(\u0027Command parameter %s not recognized as a rule match \u0027"},{"line_number":401,"context_line":"                        \u0027operator\u0027, command)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"    def to_json(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_82b89476","line":400,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":420,"context_line":""},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"class RuleStatement(_JsonDump):"},{"line_number":423,"context_line":"    \"\"\" -j \u003c\u003e"},{"line_number":424,"context_line":"    \"\"\""},{"line_number":425,"context_line":"    def __init__(self, _type, addr\u003dNone, port\u003dNone, target\u003dNone, flags\u003dNone):"},{"line_number":426,"context_line":"        self.type \u003d _type"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_62bbb871","line":423,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":421,"context_line":""},{"line_number":422,"context_line":"class RuleStatement(_JsonDump):"},{"line_number":423,"context_line":"    \"\"\" -j \u003c\u003e"},{"line_number":424,"context_line":"    \"\"\""},{"line_number":425,"context_line":"    def __init__(self, _type, addr\u003dNone, port\u003dNone, target\u003dNone, flags\u003dNone):"},{"line_number":426,"context_line":"        self.type \u003d _type"},{"line_number":427,"context_line":"        self.addr \u003d addr"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_c2b1ec91","line":424,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            return cls(_type)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        addr \u003d _json.get(\u0027addr\u0027)  # Could be str, range or"},{"line_number":443,"context_line":"                                  # map (TODO) {key, data}."},{"line_number":444,"context_line":"        flags \u003d _json.get(\u0027flags\u0027)  # Could be str or list."},{"line_number":445,"context_line":"        port \u003d _json.get(\u0027port\u0027)  # Could be int"},{"line_number":446,"context_line":"        target \u003d _json.get(\u0027target\u0027)  # Could be str (another chain)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_a2acb035","line":443,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E114 indentation is not a multiple of four (comment)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            return cls(_type)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        addr \u003d _json.get(\u0027addr\u0027)  # Could be str, range or"},{"line_number":443,"context_line":"                                  # map (TODO) {key, data}."},{"line_number":444,"context_line":"        flags \u003d _json.get(\u0027flags\u0027)  # Could be str or list."},{"line_number":445,"context_line":"        port \u003d _json.get(\u0027port\u0027)  # Could be int"},{"line_number":446,"context_line":"        target \u003d _json.get(\u0027target\u0027)  # Could be str (another chain)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_02ac8432","line":443,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E116 unexpected indentation (comment)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":440,"context_line":"            return cls(_type)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        addr \u003d _json.get(\u0027addr\u0027)  # Could be str, range or"},{"line_number":443,"context_line":"                                  # map (TODO) {key, data}."},{"line_number":444,"context_line":"        flags \u003d _json.get(\u0027flags\u0027)  # Could be str or list."},{"line_number":445,"context_line":"        port \u003d _json.get(\u0027port\u0027)  # Could be int"},{"line_number":446,"context_line":"        target \u003d _json.get(\u0027target\u0027)  # Could be str (another chain)"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e2a6a853","line":443,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":455,"context_line":""},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":458,"context_line":"    \"\"\""},{"line_number":459,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_42631c1b","line":458,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":458,"context_line":"    \"\"\""},{"line_number":459,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def __init__(self, key, value):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_2266e02a","line":459,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":457,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":458,"context_line":"    \"\"\""},{"line_number":459,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":460,"context_line":"    \"\"\""},{"line_number":461,"context_line":""},{"line_number":462,"context_line":"    def __init__(self, key, value):"},{"line_number":463,"context_line":"        self.key \u003d key"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_826d3406","line":460,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":601,"context_line":"            rule \u003d \u0027 \u0027.join("},{"line_number":602,"context_line":"                self._wrap_target_chain(e, wrap) for e in rule.split(\u0027 \u0027))"},{"line_number":603,"context_line":""},{"line_number":604,"context_line":"        # self.rules.append(IptablesRule(chain, rule, wrap, top, self.wrap_name,"},{"line_number":605,"context_line":"        #                                tag, comment))"},{"line_number":606,"context_line":"        self.rules.append(Rule(chain, rule, wrap, top, self.wrap_name,"},{"line_number":607,"context_line":"                                       tag, comment))"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_6270d8dd","line":604,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":604,"context_line":"        # self.rules.append(IptablesRule(chain, rule, wrap, top, self.wrap_name,"},{"line_number":605,"context_line":"        #                                tag, comment))"},{"line_number":606,"context_line":"        self.rules.append(Rule(chain, rule, wrap, top, self.wrap_name,"},{"line_number":607,"context_line":"                                       tag, comment))"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"    def _wrap_target_chain(self, s, wrap):"},{"line_number":610,"context_line":"        if s.startswith(\u0027$\u0027):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_c2760cd9","line":607,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E127 continuation line over-indented for visual indent","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":""},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"# # TODO: refactor everything!!!"},{"line_number":620,"context_line":"# class NFTablesRule(object):"},{"line_number":621,"context_line":"#"},{"line_number":622,"context_line":"#     def __init__(self, chain, rule, wrap\u003dTrue, top\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_a27150e1","line":619,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E303 too many blank lines (5)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":616,"context_line":""},{"line_number":617,"context_line":""},{"line_number":618,"context_line":""},{"line_number":619,"context_line":"# # TODO: refactor everything!!!"},{"line_number":620,"context_line":"# class NFTablesRule(object):"},{"line_number":621,"context_line":"#"},{"line_number":622,"context_line":"#     def __init__(self, chain, rule, wrap\u003dTrue, top\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_02812490","line":619,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":649,"context_line":"#         #return comment_rule(rule.strip(), self.comment)"},{"line_number":650,"context_line":"#"},{"line_number":651,"context_line":"#"},{"line_number":652,"context_line":"# # TODO: refactor everything!!!"},{"line_number":653,"context_line":"# class NFTablesTable(object):"},{"line_number":654,"context_line":"#"},{"line_number":655,"context_line":"#     def __init__(self, binary_name\u003dbin_name):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e27b48bb","line":652,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":712,"context_line":"#             # a matching jump chain"},{"line_number":713,"context_line":"#             jump_snippet \u003d \u0027-j %s\u0027 % name"},{"line_number":714,"context_line":"#             self.remove_rules +\u003d [str(r) for r in self.rules"},{"line_number":715,"context_line":"#                                   if r.chain \u003d\u003d name or jump_snippet in r.rule]"},{"line_number":716,"context_line":"#         else:"},{"line_number":717,"context_line":"#             jump_snippet \u003d \u0027-j %s-%s\u0027 % (self.wrap_name, name)"},{"line_number":718,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_424cbc9d","line":715,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E501 line too long (81 \u003e 79 characters)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":741,"context_line":"#             rule \u003d \u0027 \u0027.join("},{"line_number":742,"context_line":"#                 self._wrap_target_chain(e, wrap) for e in rule.split(\u0027 \u0027))"},{"line_number":743,"context_line":"#"},{"line_number":744,"context_line":"#         self.rules.append(NFTablesRule(chain, rule, wrap, top, self.wrap_name,"},{"line_number":745,"context_line":"#                                        tag, comment))"},{"line_number":746,"context_line":"#"},{"line_number":747,"context_line":"#     def _wrap_target_chain(self, s, wrap):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_224f0093","line":744,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":762,"context_line":"#         try:"},{"line_number":763,"context_line":"#             if \u0027$\u0027 in rule:"},{"line_number":764,"context_line":"#                 rule \u003d \u0027 \u0027.join("},{"line_number":765,"context_line":"#                     self._wrap_target_chain(e, wrap) for e in rule.split(\u0027 \u0027))"},{"line_number":766,"context_line":"#"},{"line_number":767,"context_line":"#             self.rules.remove(NFTablesRule(chain, rule, wrap, top,"},{"line_number":768,"context_line":"#                                            self.wrap_name,"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_8246d47b","line":765,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":769,"context_line":"#                                            comment\u003dcomment))"},{"line_number":770,"context_line":"#             if not wrap:"},{"line_number":771,"context_line":"#                 self.remove_rules.append(str(NFTablesRule(chain, rule, wrap,"},{"line_number":772,"context_line":"#                                                           top, self.wrap_name,"},{"line_number":773,"context_line":"#                                                           comment\u003dcomment)))"},{"line_number":774,"context_line":"#         except ValueError:"},{"line_number":775,"context_line":"#             LOG.warning(\u0027Tried to remove rule that was not there:\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_6249f889","line":772,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: E501 line too long (80 \u003e 79 characters)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":811,"context_line":"#"},{"line_number":812,"context_line":"#         self.ipv4 \u003d {\u0027filter\u0027: NFTablesTable(binary_name\u003dself.wrap_name)}"},{"line_number":813,"context_line":"#         self.ipv6 \u003d {\u0027filter\u0027: NFTablesTable(binary_name\u003dself.wrap_name)}"},{"line_number":814,"context_line":"#         # TODO: configure default \"filter\" tables (ipv4, ipv6)"},{"line_number":815,"context_line":"#         # TODO: configure default \"raw\" tables (ipv4, ipv6)"},{"line_number":816,"context_line":"#         # TODO: configure default \"mangle\" tables (ipv4, ipv6), if needed"},{"line_number":817,"context_line":"#         # TODO: configure default \"nat\" tables (ipv4, ipv6), if needed"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_c25f2c3f","line":814,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":812,"context_line":"#         self.ipv4 \u003d {\u0027filter\u0027: NFTablesTable(binary_name\u003dself.wrap_name)}"},{"line_number":813,"context_line":"#         self.ipv6 \u003d {\u0027filter\u0027: NFTablesTable(binary_name\u003dself.wrap_name)}"},{"line_number":814,"context_line":"#         # TODO: configure default \"filter\" tables (ipv4, ipv6)"},{"line_number":815,"context_line":"#         # TODO: configure default \"raw\" tables (ipv4, ipv6)"},{"line_number":816,"context_line":"#         # TODO: configure default \"mangle\" tables (ipv4, ipv6), if needed"},{"line_number":817,"context_line":"#         # TODO: configure default \"nat\" tables (ipv4, ipv6), if needed"},{"line_number":818,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_a25af04c","line":815,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":813,"context_line":"#         self.ipv6 \u003d {\u0027filter\u0027: NFTablesTable(binary_name\u003dself.wrap_name)}"},{"line_number":814,"context_line":"#         # TODO: configure default \"filter\" tables (ipv4, ipv6)"},{"line_number":815,"context_line":"#         # TODO: configure default \"raw\" tables (ipv4, ipv6)"},{"line_number":816,"context_line":"#         # TODO: configure default \"mangle\" tables (ipv4, ipv6), if needed"},{"line_number":817,"context_line":"#         # TODO: configure default \"nat\" tables (ipv4, ipv6), if needed"},{"line_number":818,"context_line":"#"},{"line_number":819,"context_line":"#     def get_tables(self, ip_version):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_025ac44d","line":816,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"9cdb45bebc59103d20e388efc08644b92a6a71b8","unresolved":false,"context_lines":[{"line_number":814,"context_line":"#         # TODO: configure default \"filter\" tables (ipv4, ipv6)"},{"line_number":815,"context_line":"#         # TODO: configure default \"raw\" tables (ipv4, ipv6)"},{"line_number":816,"context_line":"#         # TODO: configure default \"mangle\" tables (ipv4, ipv6), if needed"},{"line_number":817,"context_line":"#         # TODO: configure default \"nat\" tables (ipv4, ipv6), if needed"},{"line_number":818,"context_line":"#"},{"line_number":819,"context_line":"#     def get_tables(self, ip_version):"},{"line_number":820,"context_line":"#         return {4: self.ipv4, 6: self.ipv6}[ip_version]"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f65232a_e254e823","line":817,"updated":"2020-10-27 23:16:48.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"792b3f56c8a1f8bf1b5003e65a86ddb060a29a89"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_fa7138e0","line":18,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027contextlib\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_5a814c8f","line":19,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027difflib\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_3a7c50b4","line":20,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027itertools\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import typing"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9a4c849f","line":22,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027re\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import typing"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_7a4fe891","line":24,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027typing\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import typing"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_da46fc7c","line":27,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron_lib.exceptions\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_ba49808c","line":28,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron_lib.exceptions.l3 as l3_exc\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"},{"line_number":32,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_1a607401","line":29,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron_lib.utils.runtime\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"},{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_fa5ad84d","line":30,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027oslo_concurrency.lockutils\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"},{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":"from oslo_log import log as logging"},{"line_number":34,"context_line":"from oslo_serialization import jsonutils"},{"line_number":35,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_5a5aec4e","line":32,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027oslo_config.cfg\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":"from oslo_log import log as logging"},{"line_number":34,"context_line":"from oslo_serialization import jsonutils"},{"line_number":35,"context_line":"from oslo_utils import excutils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from neutron._i18n import _"},{"line_number":38,"context_line":"from neutron.agent.linux import ip_lib"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_3a55701e","line":35,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027oslo_utils.excutils\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from oslo_serialization import jsonutils"},{"line_number":35,"context_line":"from oslo_utils import excutils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from neutron._i18n import _"},{"line_number":38,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":39,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9a31240f","line":37,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron._i18n._\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":39,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":41,"context_line":"from neutron.common import _constants as n_const"},{"line_number":42,"context_line":"from neutron.common import utils"},{"line_number":43,"context_line":"from neutron.conf.agent import common as config"},{"line_number":44,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_7a3408fc","line":41,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron.common._constants as n_const\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":41,"context_line":"from neutron.common import _constants as n_const"},{"line_number":42,"context_line":"from neutron.common import utils"},{"line_number":43,"context_line":"from neutron.conf.agent import common as config"},{"line_number":44,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_da3b9ce8","line":42,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron.common.utils\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":41,"context_line":"from neutron.common import _constants as n_const"},{"line_number":42,"context_line":"from neutron.common import utils"},{"line_number":43,"context_line":"from neutron.conf.agent import common as config"},{"line_number":44,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_ba3ea0d7","line":43,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027neutron.conf.agent.common as config\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":83,"context_line":"PROTOCOL_HBH \u003d \u0027hbh\u0027"},{"line_number":84,"context_line":"PROTOCOL_MH \u003d \u0027mh\u0027"},{"line_number":85,"context_line":"PROTOCOL_RT \u003d \u0027rt\u0027"},{"line_number":86,"context_line":"# (TODO) PROTOCOL_VLAN: \"\u0026\": [{\"payload\": {\"base\": \"ll\", \"offset\": 0,"},{"line_number":87,"context_line":"#                                          \"len\": 16}},"},{"line_number":88,"context_line":"#                             4095]"},{"line_number":89,"context_line":"PROTOCOL_ARP \u003d \u0027arp\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_1a2514c3","line":86,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @classmethod"},{"line_number":219,"context_line":"    def from_json(cls, _json):"},{"line_number":220,"context_line":"        if not \u0027nftables\u0027 in _json:"},{"line_number":221,"context_line":"            raise Exception(\u0027JSON object is not a NFTables save file\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        metainfo \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_fa1f786d","line":220,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: E713 test for membership should be \u0027not in\u0027","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    @classmethod"},{"line_number":219,"context_line":"    def from_json(cls, _json):"},{"line_number":220,"context_line":"        if not \u0027nftables\u0027 in _json:"},{"line_number":221,"context_line":"            raise Exception(\u0027JSON object is not a NFTables save file\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        metainfo \u003d None"},{"line_number":224,"context_line":"        tables \u003d []"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_5a2f8ca0","line":221,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        if \u0027mangle\u0027 \u003d\u003d command:"},{"line_number":342,"context_line":"            return RuleMangle.from_json(value)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        raise Exception(\u0027Rule invalid command %s\u0027 % command)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    @property"},{"line_number":347,"context_line":"    def chain_wrapped(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_3a2a908f","line":344,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        return rule"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def is_jump_to_chain(self, chain):"},{"line_number":361,"context_line":"        for _ in (expr for expr in self.expr if"},{"line_number":362,"context_line":"                  type(expr, RuleStatement) and"},{"line_number":363,"context_line":"                  expr.type \u003d\u003d STATEMENT_JUMP and expr.target \u003d\u003d chain):"},{"line_number":364,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9a1ac47a","line":361,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F402 import \u0027_\u0027 from line 37 shadowed by loop variable","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def __init__(self, op, left, right):"},{"line_number":384,"context_line":"        if op not in OPERATORS:"},{"line_number":385,"context_line":"            raise Exception(\u0027Operator %(op)s not supported\u0027 % {\u0027op\u0027: op})"},{"line_number":386,"context_line":"        self.op \u003d op"},{"line_number":387,"context_line":"        self.left \u003d left"},{"line_number":388,"context_line":"        self.right \u003d right"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_7a1d2872","line":385,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":407,"context_line":""},{"line_number":408,"context_line":"    def __init__(self, op, first, second):"},{"line_number":409,"context_line":"        if op not in BINARY_OPERATORS:"},{"line_number":410,"context_line":"            raise Exception(\u0027Binary operator %(op)s not supported\u0027 %"},{"line_number":411,"context_line":"                            {\u0027op\u0027: op})"},{"line_number":412,"context_line":"        self.op \u003d op"},{"line_number":413,"context_line":"        self.first \u003d first"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_da143c51","line":410,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":467,"context_line":"            return cls(\u0027raw_value\u0027, raw_value\u003d_json)"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"        if not isinstance(_json, dict):"},{"line_number":470,"context_line":"            raise Exception(\u0027A rule match value should be a raw value \u0027"},{"line_number":471,"context_line":"                            \u0027(int, str) or a dictionary; type: %s\u0027 %"},{"line_number":472,"context_line":"                            type(_json))"},{"line_number":473,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_ba17c051","line":470,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":496,"context_line":"            second \u003d RuleMatchValue.from_json(_json[command][1])"},{"line_number":497,"context_line":"            return RuleMatchBinaryOperator(command, first, second)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        raise Exception(\u0027Command parameter %s not recognized as a rule match \u0027"},{"line_number":500,"context_line":"                        \u0027operator\u0027, command)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def to_json(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_1a0eb43a","line":499,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":519,"context_line":""},{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class RuleStatement(_JsonDump):"},{"line_number":522,"context_line":"    \"\"\" -j \u003c\u003e"},{"line_number":523,"context_line":"    \"\"\""},{"line_number":524,"context_line":"    def __init__(self, _type, addr\u003dNone, port\u003dNone, target\u003dNone, flags\u003dNone):"},{"line_number":525,"context_line":"        self.type \u003d _type"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_fa08182e","line":522,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":520,"context_line":""},{"line_number":521,"context_line":"class RuleStatement(_JsonDump):"},{"line_number":522,"context_line":"    \"\"\" -j \u003c\u003e"},{"line_number":523,"context_line":"    \"\"\""},{"line_number":524,"context_line":"    def __init__(self, _type, addr\u003dNone, port\u003dNone, target\u003dNone, flags\u003dNone):"},{"line_number":525,"context_line":"        self.type \u003d _type"},{"line_number":526,"context_line":"        self.addr \u003d addr"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_5a082c2b","line":523,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        if not _json:"},{"line_number":552,"context_line":"            return cls(_type)"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        addr \u003d _json.get(\u0027addr\u0027)  # Could be str, range or (TODO) map {k:d}."},{"line_number":555,"context_line":"        flags \u003d _json.get(\u0027flags\u0027)  # Could be str or list."},{"line_number":556,"context_line":"        port \u003d _json.get(\u0027port\u0027)  # int"},{"line_number":557,"context_line":"        target \u003d _json.get(\u0027target\u0027)  # str (another chain)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_3a03b011","line":554,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":573,"context_line":""},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":576,"context_line":"    \"\"\""},{"line_number":577,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":578,"context_line":"    \"\"\""},{"line_number":579,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9dff5e00","line":576,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":574,"context_line":""},{"line_number":575,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":576,"context_line":"    \"\"\""},{"line_number":577,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":578,"context_line":"    \"\"\""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    def __init__(self, key, value):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_7d02420b","line":577,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":575,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":576,"context_line":"    \"\"\""},{"line_number":577,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":578,"context_line":"    \"\"\""},{"line_number":579,"context_line":""},{"line_number":580,"context_line":"    def __init__(self, key, value):"},{"line_number":581,"context_line":"        self.key \u003d key"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_dd09d62c","line":578,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":740,"context_line":"        \"\"\""},{"line_number":741,"context_line":"        chain_name \u003d get_chain_name(chain_name, wrap)"},{"line_number":742,"context_line":"        if wrap and chain_name not in (chain.name for chain in self.chains):"},{"line_number":743,"context_line":"            raise LookupError(\u0027Unknown chain: %r\u0027 % chain_name)"},{"line_number":744,"context_line":""},{"line_number":745,"context_line":"        expr \u003d self._get_jump_conditional(rule_expr)"},{"line_number":746,"context_line":"        if expr:"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_bd0cda3b","line":743,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":846,"context_line":"            self._initalize_default_tables_and_chains(family, tables[\u0027raw\u0027])"},{"line_number":847,"context_line":""},{"line_number":848,"context_line":""},{"line_number":849,"context_line":"    def _initialize_mangle_table(self):"},{"line_number":850,"context_line":"        # Default builtin chains: PREROUTING, OUTPUT, FORWARD, INPUT,"},{"line_number":851,"context_line":"        # POSTROUTING"},{"line_number":852,"context_line":"        for family, tables in [(FAMILY_IP, self.ipv4),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_1d134e5e","line":849,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":893,"context_line":"        return {4: self.ipv4, 6: self.ipv6}[ip_version]"},{"line_number":894,"context_line":""},{"line_number":895,"context_line":"    def apply(self):"},{"line_number":896,"context_line":"        # TODO: deferred nftables."},{"line_number":897,"context_line":"        # if self.nftables_apply_deferred:"},{"line_number":898,"context_line":"        #     return"},{"line_number":899,"context_line":"        return self._apply()"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_fd0db235","line":896,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":899,"context_line":"        return self._apply()"},{"line_number":900,"context_line":""},{"line_number":901,"context_line":"    def _apply(self):"},{"line_number":902,"context_line":"        # TODO: well, refactor this, of course."},{"line_number":903,"context_line":"        self._apply_synchronized()"},{"line_number":904,"context_line":""},{"line_number":905,"context_line":"    def _apply_synchronized(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_5d1dc664","line":902,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":950,"context_line":"                                                namespace\u003dself.namespace)"},{"line_number":951,"context_line":""},{"line_number":952,"context_line":"    def _tables_to_apply(self, nft_parser, family, new_tables) -\u003e list:"},{"line_number":953,"context_line":"        \"\"\""},{"line_number":954,"context_line":"        \"\"\""},{"line_number":955,"context_line":"        current_table_names \u003d [table.name for table in nft_parser.tables if"},{"line_number":956,"context_line":"                               table.family \u003d\u003d family]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_3d18ca73","line":953,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":951,"context_line":""},{"line_number":952,"context_line":"    def _tables_to_apply(self, nft_parser, family, new_tables) -\u003e list:"},{"line_number":953,"context_line":"        \"\"\""},{"line_number":954,"context_line":"        \"\"\""},{"line_number":955,"context_line":"        current_table_names \u003d [table.name for table in nft_parser.tables if"},{"line_number":956,"context_line":"                               table.family \u003d\u003d family]"},{"line_number":957,"context_line":"        return [table for table in new_tables.values() if"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9d28fe86","line":954,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":958,"context_line":"                table.name not in current_table_names]"},{"line_number":959,"context_line":""},{"line_number":960,"context_line":"    def _chains_to_apply(self, nft_parser, family, table) -\u003e list:"},{"line_number":961,"context_line":"        \"\"\""},{"line_number":962,"context_line":"        \"\"\""},{"line_number":963,"context_line":"        current_chain_names \u003d [chain.name for chain in nft_parser.chains if"},{"line_number":964,"context_line":"                               chain.family \u003d\u003d family and"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_7d2b6281","line":961,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":959,"context_line":""},{"line_number":960,"context_line":"    def _chains_to_apply(self, nft_parser, family, table) -\u003e list:"},{"line_number":961,"context_line":"        \"\"\""},{"line_number":962,"context_line":"        \"\"\""},{"line_number":963,"context_line":"        current_chain_names \u003d [chain.name for chain in nft_parser.chains if"},{"line_number":964,"context_line":"                               chain.family \u003d\u003d family and"},{"line_number":965,"context_line":"                               chain.table \u003d\u003d table.name]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_dd2276a4","line":962,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":972,"context_line":"        _to_add.extend([chain for chain in table.unwrapped_chains if"},{"line_number":973,"context_line":"                        chain.name not in current_chain_names])"},{"line_number":974,"context_line":""},{"line_number":975,"context_line":"        # TODO: remove unneeded chains."},{"line_number":976,"context_line":"        return _to_add"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    def _rules_to_apply(self, nft_parser, family, table):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_bd25faad","line":975,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":976,"context_line":"        return _to_add"},{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    def _rules_to_apply(self, nft_parser, family, table):"},{"line_number":979,"context_line":"        \"\"\""},{"line_number":980,"context_line":"        \"\"\""},{"line_number":981,"context_line":"        current_rules \u003d [rule for rule in nft_parser.rules if"},{"line_number":982,"context_line":"                         rule.family \u003d\u003d family and rule.table \u003d\u003d table.name]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_1d3ceec6","line":979,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":977,"context_line":""},{"line_number":978,"context_line":"    def _rules_to_apply(self, nft_parser, family, table):"},{"line_number":979,"context_line":"        \"\"\""},{"line_number":980,"context_line":"        \"\"\""},{"line_number":981,"context_line":"        current_rules \u003d [rule for rule in nft_parser.rules if"},{"line_number":982,"context_line":"                         rule.family \u003d\u003d family and rule.table \u003d\u003d table.name]"},{"line_number":983,"context_line":"        rules_to_add \u003d [rule for rule in table.rules if"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_fd3652e7","line":980,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":990,"context_line":""},{"line_number":991,"context_line":""},{"line_number":992,"context_line":""},{"line_number":993,"context_line":"    def get_traffic_counters(self, chain, wrap\u003dTrue, zero\u003dFalse):"},{"line_number":994,"context_line":"        \"\"\"Return the sum of the traffic counters of all rules of a chain.\"\"\""},{"line_number":995,"context_line":"        pass"},{"line_number":996,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_5d3666e8","line":993,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: E303 too many blank lines (5)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":995,"context_line":"        pass"},{"line_number":996,"context_line":""},{"line_number":997,"context_line":""},{"line_number":998,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_3d31eaed","line":998,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: W391 blank line at end of file","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a806da50","line":18,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027contextlib\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_88015e3b","line":19,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027difflib\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import collections"},{"line_number":18,"context_line":"import contextlib"},{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e8fc523f","line":20,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027itertools\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import difflib"},{"line_number":20,"context_line":"import itertools"},{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import typing"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c8f7d658","line":22,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027re\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":21,"context_line":"import os"},{"line_number":22,"context_line":"import re"},{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":"import typing"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_28980a1a","line":24,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027typing\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import typing"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_089b8e17","line":27,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron_lib.exceptions\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_689e8207","line":28,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron_lib.exceptions.l3 as l3_exc\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from neutron_lib import constants"},{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"},{"line_number":32,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_48a10646","line":29,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron_lib.utils.runtime\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from neutron_lib import exceptions"},{"line_number":28,"context_line":"from neutron_lib.exceptions import l3 as l3_exc"},{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"},{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a88b7ac0","line":30,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027oslo_concurrency.lockutils\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron_lib.utils import runtime"},{"line_number":30,"context_line":"from oslo_concurrency import lockutils"},{"line_number":31,"context_line":"from oslo_concurrency import processutils"},{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":"from oslo_log import log as logging"},{"line_number":34,"context_line":"from oslo_serialization import jsonutils"},{"line_number":35,"context_line":"from oslo_utils import excutils"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_88867eb8","line":32,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027oslo_config.cfg\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from oslo_config import cfg"},{"line_number":33,"context_line":"from oslo_log import log as logging"},{"line_number":34,"context_line":"from oslo_serialization import jsonutils"},{"line_number":35,"context_line":"from oslo_utils import excutils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from neutron._i18n import _"},{"line_number":38,"context_line":"from neutron.agent.linux import ip_lib"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e891f2f2","line":35,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027oslo_utils.excutils\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"from oslo_serialization import jsonutils"},{"line_number":35,"context_line":"from oslo_utils import excutils"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"from neutron._i18n import _"},{"line_number":38,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":39,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c88cf6d8","line":37,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron._i18n._\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"from neutron.agent.linux import ip_lib"},{"line_number":39,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":41,"context_line":"from neutron.common import _constants as n_const"},{"line_number":42,"context_line":"from neutron.common import utils"},{"line_number":43,"context_line":"from neutron.conf.agent import common as config"},{"line_number":44,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_28c12ae6","line":41,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron.common._constants as n_const\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":39,"context_line":"from neutron.agent.linux import iptables_comments as ic"},{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":41,"context_line":"from neutron.common import _constants as n_const"},{"line_number":42,"context_line":"from neutron.common import utils"},{"line_number":43,"context_line":"from neutron.conf.agent import common as config"},{"line_number":44,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_08c42ef4","line":42,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron.common.utils\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"from neutron.agent.linux import utils as linux_utils"},{"line_number":41,"context_line":"from neutron.common import _constants as n_const"},{"line_number":42,"context_line":"from neutron.common import utils"},{"line_number":43,"context_line":"from neutron.conf.agent import common as config"},{"line_number":44,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_68b7a287","line":43,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027neutron.conf.agent.common as config\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":83,"context_line":"PROTOCOL_HBH \u003d \u0027hbh\u0027"},{"line_number":84,"context_line":"PROTOCOL_MH \u003d \u0027mh\u0027"},{"line_number":85,"context_line":"PROTOCOL_RT \u003d \u0027rt\u0027"},{"line_number":86,"context_line":"# (TODO) PROTOCOL_VLAN: \"\u0026\": [{\"payload\": {\"base\": \"ll\", \"offset\": 0,"},{"line_number":87,"context_line":"#                                          \"len\": 16}},"},{"line_number":88,"context_line":"#                             4095]"},{"line_number":89,"context_line":"PROTOCOL_ARP \u003d \u0027arp\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_48baa66d","line":86,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    @classmethod"},{"line_number":219,"context_line":"    def from_json(cls, _json):"},{"line_number":220,"context_line":"        if not \u0027nftables\u0027 in _json:"},{"line_number":221,"context_line":"            raise Exception(\u0027JSON object is not a NFTables save file\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        metainfo \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a8b41a81","line":220,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E713 test for membership should be \u0027not in\u0027","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":218,"context_line":"    @classmethod"},{"line_number":219,"context_line":"    def from_json(cls, _json):"},{"line_number":220,"context_line":"        if not \u0027nftables\u0027 in _json:"},{"line_number":221,"context_line":"            raise Exception(\u0027JSON object is not a NFTables save file\u0027)"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"        metainfo \u003d None"},{"line_number":224,"context_line":"        tables \u003d []"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_88af9e28","line":221,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":341,"context_line":"        if \u0027mangle\u0027 \u003d\u003d command:"},{"line_number":342,"context_line":"            return RuleMangle.from_json(value)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        raise Exception(\u0027Rule invalid command %s\u0027 % command)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"    @property"},{"line_number":347,"context_line":"    def chain_wrapped(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e8aa9216","line":344,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":358,"context_line":"        return rule"},{"line_number":359,"context_line":""},{"line_number":360,"context_line":"    def is_jump_to_chain(self, chain):"},{"line_number":361,"context_line":"        for _ in (expr for expr in self.expr if"},{"line_number":362,"context_line":"                  type(expr, RuleStatement) and"},{"line_number":363,"context_line":"                  expr.type \u003d\u003d STATEMENT_JUMP and expr.target \u003d\u003d chain):"},{"line_number":364,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c8a51649","line":361,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F402 import \u0027_\u0027 from line 37 shadowed by loop variable","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":382,"context_line":""},{"line_number":383,"context_line":"    def __init__(self, op, left, right):"},{"line_number":384,"context_line":"        if op not in OPERATORS:"},{"line_number":385,"context_line":"            raise Exception(\u0027Operator %(op)s not supported\u0027 % {\u0027op\u0027: op})"},{"line_number":386,"context_line":"        self.op \u003d op"},{"line_number":387,"context_line":"        self.left \u003d left"},{"line_number":388,"context_line":"        self.right \u003d right"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_28664a2b","line":385,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":444,"context_line":""},{"line_number":445,"context_line":"    def __init__(self, op, first, second):"},{"line_number":446,"context_line":"        if op not in BINARY_OPERATORS:"},{"line_number":447,"context_line":"            raise Exception(\u0027Binary operator %(op)s not supported\u0027 %"},{"line_number":448,"context_line":"                            {\u0027op\u0027: op})"},{"line_number":449,"context_line":"        self.op \u003d op"},{"line_number":450,"context_line":"        self.first \u003d first"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_0869cef7","line":447,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":504,"context_line":"            return cls(\u0027raw_value\u0027, raw_value\u003d_json)"},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        if not isinstance(_json, dict):"},{"line_number":507,"context_line":"            raise Exception(\u0027A rule match value should be a raw value \u0027"},{"line_number":508,"context_line":"                            \u0027(int, str) or a dictionary; type: %s\u0027 %"},{"line_number":509,"context_line":"                            type(_json))"},{"line_number":510,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_686cc207","line":507,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":533,"context_line":"            second \u003d RuleMatchValue.from_json(_json[command][1])"},{"line_number":534,"context_line":"            return RuleMatchBinaryOperator(command, first, second)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        raise Exception(\u0027Command parameter %s not recognized as a rule match \u0027"},{"line_number":537,"context_line":"                        \u0027operator\u0027, command)"},{"line_number":538,"context_line":""},{"line_number":539,"context_line":"    def to_json(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_486f46fb","line":536,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class RuleStatement(_JsonDump):"},{"line_number":559,"context_line":"    \"\"\" -j \u003c\u003e"},{"line_number":560,"context_line":"    \"\"\""},{"line_number":561,"context_line":"    def __init__(self, _type, addr\u003dNone, port\u003dNone, target\u003dNone, flags\u003dNone):"},{"line_number":562,"context_line":"        self.type \u003d _type"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a879bac8","line":559,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":557,"context_line":""},{"line_number":558,"context_line":"class RuleStatement(_JsonDump):"},{"line_number":559,"context_line":"    \"\"\" -j \u003c\u003e"},{"line_number":560,"context_line":"    \"\"\""},{"line_number":561,"context_line":"    def __init__(self, _type, addr\u003dNone, port\u003dNone, target\u003dNone, flags\u003dNone):"},{"line_number":562,"context_line":"        self.type \u003d _type"},{"line_number":563,"context_line":"        self.addr \u003d addr"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_8874bed0","line":560,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H401: docstring should not start with a space","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":588,"context_line":"        if not _json:"},{"line_number":589,"context_line":"            return cls(_type)"},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"        addr \u003d _json.get(\u0027addr\u0027)  # Could be str, range or (TODO) map {k:d}."},{"line_number":592,"context_line":"        flags \u003d _json.get(\u0027flags\u0027)  # Could be str or list."},{"line_number":593,"context_line":"        port \u003d _json.get(\u0027port\u0027)  # int"},{"line_number":594,"context_line":"        target \u003d _json.get(\u0027target\u0027)  # str (another chain)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e87f32a8","line":591,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":610,"context_line":""},{"line_number":611,"context_line":""},{"line_number":612,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":613,"context_line":"    \"\"\""},{"line_number":614,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":615,"context_line":"    \"\"\""},{"line_number":616,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c87a36b8","line":613,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":611,"context_line":""},{"line_number":612,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":613,"context_line":"    \"\"\""},{"line_number":614,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":615,"context_line":"    \"\"\""},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    def __init__(self, key, value):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_284f6a93","line":614,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":612,"context_line":"class RuleMangle(_JsonDump):"},{"line_number":613,"context_line":"    \"\"\""},{"line_number":614,"context_line":"    key, value: pueden ser cualquier match_value"},{"line_number":615,"context_line":"    \"\"\""},{"line_number":616,"context_line":""},{"line_number":617,"context_line":"    def __init__(self, key, value):"},{"line_number":618,"context_line":"        self.key \u003d key"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_08526e3b","line":615,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":815,"context_line":"        \"\"\""},{"line_number":816,"context_line":"        chain_name \u003d get_chain_name(chain_name, wrap)"},{"line_number":817,"context_line":"        if wrap and chain_name not in (chain.name for chain in self.chains):"},{"line_number":818,"context_line":"            raise LookupError(\u0027Unknown chain: %r\u0027 % chain_name)"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":"        expr \u003d self._get_jump_conditional(rule_expr)"},{"line_number":821,"context_line":"        if expr:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_6845e26f","line":818,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: N534: Untranslated exception message.","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":917,"context_line":"            self._initalize_default_tables_and_chains(family, tables[\u0027raw\u0027])"},{"line_number":918,"context_line":""},{"line_number":919,"context_line":""},{"line_number":920,"context_line":"    def _initialize_mangle_table(self):"},{"line_number":921,"context_line":"        # Default builtin chains: PREROUTING, OUTPUT, FORWARD, INPUT,"},{"line_number":922,"context_line":"        # POSTROUTING"},{"line_number":923,"context_line":"        for family, tables in [(FAMILY_IP, self.ipv4),"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_4848e685","line":920,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E303 too many blank lines (2)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":964,"context_line":"        return {4: self.ipv4, 6: self.ipv6}[ip_version]"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"    def apply(self):"},{"line_number":967,"context_line":"        # TODO: deferred nftables."},{"line_number":968,"context_line":"        # if self.nftables_apply_deferred:"},{"line_number":969,"context_line":"        #     return"},{"line_number":970,"context_line":"        return self._apply()"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a8625a08","line":967,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":970,"context_line":"        return self._apply()"},{"line_number":971,"context_line":""},{"line_number":972,"context_line":"    def _apply(self):"},{"line_number":973,"context_line":"        # TODO: well, refactor this, of course."},{"line_number":974,"context_line":"        self._apply_synchronized()"},{"line_number":975,"context_line":""},{"line_number":976,"context_line":"    def _apply_synchronized(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_885dde48","line":973,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1021,"context_line":"                                                namespace\u003dself.namespace)"},{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    def _tables_to_apply(self, nft_parser, family, new_tables) -\u003e list:"},{"line_number":1024,"context_line":"        \"\"\""},{"line_number":1025,"context_line":"        \"\"\""},{"line_number":1026,"context_line":"        current_table_names \u003d [table.name for table in nft_parser.tables if"},{"line_number":1027,"context_line":"                               table.family \u003d\u003d family]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e858d256","line":1024,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1022,"context_line":""},{"line_number":1023,"context_line":"    def _tables_to_apply(self, nft_parser, family, new_tables) -\u003e list:"},{"line_number":1024,"context_line":"        \"\"\""},{"line_number":1025,"context_line":"        \"\"\""},{"line_number":1026,"context_line":"        current_table_names \u003d [table.name for table in nft_parser.tables if"},{"line_number":1027,"context_line":"                               table.family \u003d\u003d family]"},{"line_number":1028,"context_line":"        return [table for table in new_tables.values() if"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c8535638","line":1025,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"                table.name not in current_table_names]"},{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"    def _chains_to_apply(self, nft_parser, family, table) -\u003e list:"},{"line_number":1032,"context_line":"        \"\"\""},{"line_number":1033,"context_line":"        \"\"\""},{"line_number":1034,"context_line":"        current_chain_names \u003d [chain.name for chain in nft_parser.chains if"},{"line_number":1035,"context_line":"                               chain.family \u003d\u003d family and"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_28348afb","line":1032,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1030,"context_line":""},{"line_number":1031,"context_line":"    def _chains_to_apply(self, nft_parser, family, table) -\u003e list:"},{"line_number":1032,"context_line":"        \"\"\""},{"line_number":1033,"context_line":"        \"\"\""},{"line_number":1034,"context_line":"        current_chain_names \u003d [chain.name for chain in nft_parser.chains if"},{"line_number":1035,"context_line":"                               chain.family \u003d\u003d family and"},{"line_number":1036,"context_line":"                               chain.table \u003d\u003d table.name]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_08370e01","line":1033,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1043,"context_line":"        _to_add.extend([chain for chain in table.unwrapped_chains if"},{"line_number":1044,"context_line":"                        chain.name not in current_chain_names])"},{"line_number":1045,"context_line":""},{"line_number":1046,"context_line":"        # TODO: remove unneeded chains."},{"line_number":1047,"context_line":"        return _to_add"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"    def _rules_to_apply(self, nft_parser, family, table):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_683a02e7","line":1046,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H101: Use TODO(NAME)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1047,"context_line":"        return _to_add"},{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"    def _rules_to_apply(self, nft_parser, family, table):"},{"line_number":1050,"context_line":"        \"\"\""},{"line_number":1051,"context_line":"        \"\"\""},{"line_number":1052,"context_line":"        current_rules \u003d [rule for rule in nft_parser.rules if"},{"line_number":1053,"context_line":"                         rule.family \u003d\u003d family and rule.table \u003d\u003d table.name]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_483d86db","line":1050,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1048,"context_line":""},{"line_number":1049,"context_line":"    def _rules_to_apply(self, nft_parser, family, table):"},{"line_number":1050,"context_line":"        \"\"\""},{"line_number":1051,"context_line":"        \"\"\""},{"line_number":1052,"context_line":"        current_rules \u003d [rule for rule in nft_parser.rules if"},{"line_number":1053,"context_line":"                         rule.family \u003d\u003d family and rule.table \u003d\u003d table.name]"},{"line_number":1054,"context_line":"        rules_to_add \u003d [rule for rule in table.rules if"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a827fac9","line":1051,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H404: multi line docstring should start without a leading new line","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1061,"context_line":""},{"line_number":1062,"context_line":""},{"line_number":1063,"context_line":""},{"line_number":1064,"context_line":"    def get_traffic_counters(self, chain, wrap\u003dTrue, zero\u003dFalse):"},{"line_number":1065,"context_line":"        \"\"\"Return the sum of the traffic counters of all rules of a chain.\"\"\""},{"line_number":1066,"context_line":"        pass"},{"line_number":1067,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_8822feb7","line":1064,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E303 too many blank lines (5)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1066,"context_line":"        pass"},{"line_number":1067,"context_line":""},{"line_number":1068,"context_line":""},{"line_number":1069,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e82d72a8","line":1069,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: W391 blank line at end of file","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"}],"neutron/tests/functional/privileged/agent/linux/test_nftables.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import tempfile"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_serialization import jsonutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_1a77d4d6","line":15,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F401 \u0027tempfile\u0027 imported but unused","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"}],"neutron/tests/unit/agent/linux/test_nftables_manager.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":1681,"context_line":"}"},{"line_number":1682,"context_line":"\"\"\""},{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"example2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"raw\", \"handle\": 61}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"PREROUTING\", \"handle\": 5, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"OUTPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"output\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"OUTPUT\", \"handle\": 6, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 3}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 4}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 62}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"nat\", \"hook\": \"prerouting\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"PREROUTING\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"nat\", \"hook\": \"input\", \"prio\": 100, \"policy\": \"accept\"}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"nat\", \"hook\": \"output\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"OUTPUT\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 4, \"type\": \"nat\", \"hook\": \"postrouting\", \"prio\": 100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-postrouting-bottom\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-OUTPUT\", \"handle\": 15, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 16, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 7}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"redirect\": {\"port\": 9697}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 8}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"192.168.40.52\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.250\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-snat\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 20, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-float-snat\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 21, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 22, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 2}}, {\"match\": {\"op\": \"in\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-postrouting-bottom\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-postrouting-bottom\", \"handle\": 23, \"comment\": \"Perform source NAT on outgoing traffic.\", \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-snat\"}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 63}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"PREROUTING\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"input\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"INPUT\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"FORWARD\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"FORWARD\", \"handle\": 17, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"OUTPUT\", \"handle\": 4, \"type\": \"route\", \"hook\": \"output\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"OUTPUT\", \"handle\": 18, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 5, \"type\": \"filter\", \"hook\": \"postrouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 19, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 6}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 20, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 21, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-mark\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 22, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 23, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"ct\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 24, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-floatingip\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 25, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901761]}, 1]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 11}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 26, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-floatingip\", \"handle\": 12}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-mark\", \"handle\": 13}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-mark\", \"handle\": 27, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901762]}, 2]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 14}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 28, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 29, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 64}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"INPUT\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"input\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"INPUT\", \"handle\": 10, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"FORWARD\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"output\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-filter-top\", \"handle\": 4}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-filter-top\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-local\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-FORWARD\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 1}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 9697}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-local\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 67108864, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}]}\u0027"},{"line_number":1685,"context_line":""},{"line_number":1686,"context_line":""},{"line_number":1687,"context_line":"class NFTablesJsonParserTestCase(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_9a63e41a","line":1684,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: E501 line too long (15050 \u003e 79 characters)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":1709,"context_line":""},{"line_number":1710,"context_line":""},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":"class NFTablesTableTestCase(base.BaseTestCase):"},{"line_number":1713,"context_line":""},{"line_number":1714,"context_line":"    def test_add_chain(self):"},{"line_number":1715,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_7a66c82b","line":1712,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: E303 too many blank lines (4)","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"        ns \u003d \u0027ns101\u0027"},{"line_number":1725,"context_line":"        nft_man \u003d nftables_manager.NFTablesManager(namespace\u003dns)"},{"line_number":1726,"context_line":"        nft_man._apply_synchronized()"},{"line_number":1727,"context_line":"        a\u003d1"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_ba7060de","line":1727,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"3b5c1940c3527aa9ddbc46afaae7d58e2aca5965","unresolved":false,"context_lines":[{"line_number":1724,"context_line":"        ns \u003d \u0027ns101\u0027"},{"line_number":1725,"context_line":"        nft_man \u003d nftables_manager.NFTablesManager(namespace\u003dns)"},{"line_number":1726,"context_line":"        nft_man._apply_synchronized()"},{"line_number":1727,"context_line":"        a\u003d1"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f621f24_da6d5c05","line":1727,"updated":"2020-11-03 02:39:36.000000000","message":"pep8: F841 local variable \u0027a\u0027 is assigned to but never used","commit_id":"4610411c8ad39aa311b340cbb075313c7772c228"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1682,"context_line":"\"\"\""},{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"# NOTE: TO DELETE"},{"line_number":1685,"context_line":"example2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"raw\", \"handle\": 61}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"PREROUTING\", \"handle\": 5, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"OUTPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"output\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"OUTPUT\", \"handle\": 6, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 3}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 4}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 62}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"nat\", \"hook\": \"prerouting\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"PREROUTING\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"nat\", \"hook\": \"input\", \"prio\": 100, \"policy\": \"accept\"}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"nat\", \"hook\": \"output\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"OUTPUT\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 4, \"type\": \"nat\", \"hook\": \"postrouting\", \"prio\": 100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-postrouting-bottom\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-OUTPUT\", \"handle\": 15, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 16, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 7}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"redirect\": {\"port\": 9697}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 8}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"192.168.40.52\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.250\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-snat\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 20, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-float-snat\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 21, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 22, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 2}}, {\"match\": {\"op\": \"in\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-postrouting-bottom\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-postrouting-bottom\", \"handle\": 23, \"comment\": \"Perform source NAT on outgoing traffic.\", \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-snat\"}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 63}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"PREROUTING\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"input\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"INPUT\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"FORWARD\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"FORWARD\", \"handle\": 17, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"OUTPUT\", \"handle\": 4, \"type\": \"route\", \"hook\": \"output\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"OUTPUT\", \"handle\": 18, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 5, \"type\": \"filter\", \"hook\": \"postrouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 19, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 6}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 20, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 21, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-mark\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 22, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 23, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"ct\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 24, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-floatingip\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 25, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901761]}, 1]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 11}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 26, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-floatingip\", \"handle\": 12}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-mark\", \"handle\": 13}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-mark\", \"handle\": 27, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901762]}, 2]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 14}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 28, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 29, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 64}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"INPUT\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"input\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"INPUT\", \"handle\": 10, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"FORWARD\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"output\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-filter-top\", \"handle\": 4}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-filter-top\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-local\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-FORWARD\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 1}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 9697}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-local\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 67108864, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}]}\u0027"},{"line_number":1686,"context_line":"example3 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1687,"context_line":"example4 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 3}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1688,"context_line":"example5 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 3, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\"}}]}}]}\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_68132267","line":1685,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (15050 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1683,"context_line":""},{"line_number":1684,"context_line":"# NOTE: TO DELETE"},{"line_number":1685,"context_line":"example2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"raw\", \"handle\": 61}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"PREROUTING\", \"handle\": 5, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"OUTPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"output\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"OUTPUT\", \"handle\": 6, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 3}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 4}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 62}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"nat\", \"hook\": \"prerouting\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"PREROUTING\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"nat\", \"hook\": \"input\", \"prio\": 100, \"policy\": \"accept\"}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"nat\", \"hook\": \"output\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"OUTPUT\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 4, \"type\": \"nat\", \"hook\": \"postrouting\", \"prio\": 100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-postrouting-bottom\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-OUTPUT\", \"handle\": 15, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 16, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 7}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"redirect\": {\"port\": 9697}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 8}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"192.168.40.52\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.250\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-snat\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 20, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-float-snat\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 21, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 22, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 2}}, {\"match\": {\"op\": \"in\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-postrouting-bottom\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-postrouting-bottom\", \"handle\": 23, \"comment\": \"Perform source NAT on outgoing traffic.\", \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-snat\"}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 63}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"PREROUTING\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"input\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"INPUT\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"FORWARD\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"FORWARD\", \"handle\": 17, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"OUTPUT\", \"handle\": 4, \"type\": \"route\", \"hook\": \"output\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"OUTPUT\", \"handle\": 18, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 5, \"type\": \"filter\", \"hook\": \"postrouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 19, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 6}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 20, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 21, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-mark\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 22, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 23, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"ct\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 24, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-floatingip\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 25, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901761]}, 1]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 11}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 26, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-floatingip\", \"handle\": 12}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-mark\", \"handle\": 13}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-mark\", \"handle\": 27, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901762]}, 2]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 14}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 28, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 29, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 64}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"INPUT\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"input\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"INPUT\", \"handle\": 10, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"FORWARD\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"output\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-filter-top\", \"handle\": 4}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-filter-top\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-local\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-FORWARD\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 1}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 9697}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-local\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 67108864, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}]}\u0027"},{"line_number":1686,"context_line":"example3 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1687,"context_line":"example4 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 3}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1688,"context_line":"example5 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 3, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\"}}]}}]}\u0027"},{"line_number":1689,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_48162657","line":1686,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (617 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1684,"context_line":"# NOTE: TO DELETE"},{"line_number":1685,"context_line":"example2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"raw\", \"handle\": 61}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"PREROUTING\", \"handle\": 5, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"OUTPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"output\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"OUTPUT\", \"handle\": 6, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 3}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 4}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 62}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"nat\", \"hook\": \"prerouting\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"PREROUTING\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"nat\", \"hook\": \"input\", \"prio\": 100, \"policy\": \"accept\"}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"nat\", \"hook\": \"output\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"OUTPUT\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 4, \"type\": \"nat\", \"hook\": \"postrouting\", \"prio\": 100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-postrouting-bottom\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-OUTPUT\", \"handle\": 15, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 16, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 7}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"redirect\": {\"port\": 9697}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 8}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"192.168.40.52\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.250\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-snat\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 20, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-float-snat\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 21, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 22, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 2}}, {\"match\": {\"op\": \"in\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-postrouting-bottom\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-postrouting-bottom\", \"handle\": 23, \"comment\": \"Perform source NAT on outgoing traffic.\", \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-snat\"}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 63}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"PREROUTING\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"input\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"INPUT\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"FORWARD\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"FORWARD\", \"handle\": 17, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"OUTPUT\", \"handle\": 4, \"type\": \"route\", \"hook\": \"output\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"OUTPUT\", \"handle\": 18, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 5, \"type\": \"filter\", \"hook\": \"postrouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 19, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 6}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 20, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 21, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-mark\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 22, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 23, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"ct\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 24, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-floatingip\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 25, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901761]}, 1]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 11}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 26, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-floatingip\", \"handle\": 12}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-mark\", \"handle\": 13}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-mark\", \"handle\": 27, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901762]}, 2]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 14}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 28, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 29, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 64}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"INPUT\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"input\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"INPUT\", \"handle\": 10, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"FORWARD\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"output\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-filter-top\", \"handle\": 4}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-filter-top\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-local\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-FORWARD\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 1}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 9697}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-local\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 67108864, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}]}\u0027"},{"line_number":1686,"context_line":"example3 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1687,"context_line":"example4 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 3}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1688,"context_line":"example5 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 3, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\"}}]}}]}\u0027"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"class NFTablesJsonParserTestCase(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a8109a58","line":1687,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (1138 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1685,"context_line":"example2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"raw\", \"handle\": 61}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"PREROUTING\", \"handle\": 5, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"OUTPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"output\", \"prio\": -300, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"raw\", \"chain\": \"OUTPUT\", \"handle\": 6, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 3}}, {\"chain\": {\"family\": \"ip\", \"table\": \"raw\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 4}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 62}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"nat\", \"hook\": \"prerouting\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"PREROUTING\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"nat\", \"hook\": \"input\", \"prio\": 100, \"policy\": \"accept\"}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"nat\", \"hook\": \"output\", \"prio\": -100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"OUTPUT\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 4, \"type\": \"nat\", \"hook\": \"postrouting\", \"prio\": 100, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"POSTROUTING\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-postrouting-bottom\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-OUTPUT\", \"handle\": 15, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 16, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 7}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"redirect\": {\"port\": 9697}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"192.168.20.250\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"dnat\": {\"addr\": \"192.168.40.52\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 8}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"192.168.40.52\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.250\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-l3-agent-snat\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 20, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-float-snat\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 21, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-l3-agent-snat\", \"handle\": 22, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 2}}, {\"match\": {\"op\": \"in\", \"left\": {\"ct\": {\"key\": \"state\"}}, \"right\": \"dnat\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"192.168.20.213\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"neutron-postrouting-bottom\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"neutron-postrouting-bottom\", \"handle\": 23, \"comment\": \"Perform source NAT on outgoing traffic.\", \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-snat\"}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 63}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"PREROUTING\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"prerouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"PREROUTING\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-PREROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"INPUT\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"input\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"INPUT\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"FORWARD\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"FORWARD\", \"handle\": 17, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"OUTPUT\", \"handle\": 4, \"type\": \"route\", \"hook\": \"output\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"OUTPUT\", \"handle\": 18, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 5, \"type\": \"filter\", \"hook\": \"postrouting\", \"prio\": -150, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 19, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-POSTROUTING\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 6}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-POSTROUTING\", \"handle\": 20, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-PREROUTING\", \"handle\": 10}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 21, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-mark\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 22, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 23, \"expr\": [{\"match\": {\"op\": \"!\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"ct\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 24, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-floatingip\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-PREROUTING\", \"handle\": 25, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-*\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"daddr\"}}, \"right\": \"169.254.169.254\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 80}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901761]}, 1]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-float-snat\", \"handle\": 11}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-float-snat\", \"handle\": 26, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-floatingip\", \"handle\": 12}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-mark\", \"handle\": 13}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-mark\", \"handle\": 27, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901762]}, 2]}}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 14}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 28, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 29, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"qg-ff9d0a6a-3f\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 67174399]}, 67108864]}}}]}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 64}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"INPUT\", \"handle\": 1, \"type\": \"filter\", \"hook\": \"input\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"INPUT\", \"handle\": 10, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-INPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"FORWARD\", \"handle\": 2, \"type\": \"filter\", \"hook\": \"forward\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 11, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"FORWARD\", \"handle\": 12, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-FORWARD\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"OUTPUT\", \"handle\": 3, \"type\": \"filter\", \"hook\": \"output\", \"prio\": 0, \"policy\": \"accept\"}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 13, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-filter-top\"}}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"OUTPUT\", \"handle\": 14, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-OUTPUT\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-filter-top\", \"handle\": 4}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-filter-top\", \"handle\": 15, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-local\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-FORWARD\", \"handle\": 5}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-FORWARD\", \"handle\": 16, \"expr\": [{\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"jump\": {\"target\": \"neutron-l3-agent-scope\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-INPUT\", \"handle\": 6}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 17, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 65535]}, \"right\": 1}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-INPUT\", \"handle\": 18, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"tcp\", \"field\": \"dport\"}}, \"right\": 9697}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-OUTPUT\", \"handle\": 7}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-local\", \"handle\": 8}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"neutron-l3-agent-scope\", \"handle\": 9}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"neutron-l3-agent-scope\", \"handle\": 19, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"qr-439045f9-b5\"}}, {\"match\": {\"op\": \"!\u003d\", \"left\": {\"meta\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 67108864, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"drop\": null}]}}]}\u0027"},{"line_number":1686,"context_line":"example3 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1687,"context_line":"example4 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 3}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1688,"context_line":"example5 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 3, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\"}}]}}]}\u0027"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"class NFTablesJsonParserTestCase(base.BaseTestCase):"},{"line_number":1691,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_880b1e28","line":1688,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (816 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1687,"context_line":"example4 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 18}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"postrouting\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"postrouting\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": {\"prefix\": {\"addr\": \"192.168.1.0\", \"len\": 24}}}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oif\"}}, \"right\": \"eth0\"}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"POSTROUTING\", \"handle\": 3}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1688,"context_line":"example5 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 3, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth5\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\"}}]}}]}\u0027"},{"line_number":1689,"context_line":""},{"line_number":1690,"context_line":"class NFTablesJsonParserTestCase(base.BaseTestCase):"},{"line_number":1691,"context_line":""},{"line_number":1692,"context_line":"    def test_parse_example1(self):"},{"line_number":1693,"context_line":"        json_input \u003d jsonutils.loads(example1)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e8061220","line":1690,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1710,"context_line":"            self.assertIn(out_entry, json_input[\u0027nftables\u0027])"},{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"example_rulematch_payload \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1714,"context_line":"example_rulematch_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": 111}}]}}]}\u0027"},{"line_number":1715,"context_line":"example_rulematch_mark_2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 6, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 305463295]}, 305397760]}}}]}}]}\u0027"},{"line_number":1716,"context_line":"example_rulematch_ct_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 22}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth2\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}]}\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c8019608","line":1713,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (571 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1711,"context_line":""},{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"example_rulematch_payload \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1714,"context_line":"example_rulematch_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": 111}}]}}]}\u0027"},{"line_number":1715,"context_line":"example_rulematch_mark_2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 6, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 305463295]}, 305397760]}}}]}}]}\u0027"},{"line_number":1716,"context_line":"example_rulematch_ct_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 22}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth2\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}]}\u0027"},{"line_number":1717,"context_line":"example_rulematch_ct_mark_accept \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}]}\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_2302ed0a","line":1714,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (674 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1712,"context_line":""},{"line_number":1713,"context_line":"example_rulematch_payload \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1714,"context_line":"example_rulematch_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": 111}}]}}]}\u0027"},{"line_number":1715,"context_line":"example_rulematch_mark_2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 6, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 305463295]}, 305397760]}}}]}}]}\u0027"},{"line_number":1716,"context_line":"example_rulematch_ct_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 22}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth2\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}]}\u0027"},{"line_number":1717,"context_line":"example_rulematch_ct_mark_accept \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}]}\u0027"},{"line_number":1718,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_03053111","line":1715,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (738 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1713,"context_line":"example_rulematch_payload \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"filter\", \"handle\": 19}}, {\"chain\": {\"family\": \"ip\", \"table\": \"filter\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"filter\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip\", \"field\": \"saddr\"}}, \"right\": \"1.1.1.1\"}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"snat\": {\"addr\": \"1.2.3.4\", \"flags\": \"fully-random\"}}]}}]}\u0027"},{"line_number":1714,"context_line":"example_rulematch_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": 111}}]}}]}\u0027"},{"line_number":1715,"context_line":"example_rulematch_mark_2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 6, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 305463295]}, 305397760]}}}]}}]}\u0027"},{"line_number":1716,"context_line":"example_rulematch_ct_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 22}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth2\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}]}\u0027"},{"line_number":1717,"context_line":"example_rulematch_ct_mark_accept \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}]}\u0027"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_63086527","line":1716,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (697 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1714,"context_line":"example_rulematch_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": 111}}]}}]}\u0027"},{"line_number":1715,"context_line":"example_rulematch_mark_2 \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip6\", \"name\": \"mangle\", \"handle\": 21}}, {\"chain\": {\"family\": \"ip6\", \"table\": \"mangle\", \"name\": \"scope\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip6\", \"table\": \"mangle\", \"chain\": \"scope\", \"handle\": 6, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"iifname\"}}, \"right\": \"eth0\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"payload\": {\"protocol\": \"ip6\", \"field\": \"daddr\"}}, \"right\": {\"prefix\": {\"addr\": \"::\", \"len\": 64}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"meta\": {\"key\": \"mark\"}}, \"value\": {\"|\": [{\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 305463295]}, 305397760]}}}]}}]}\u0027"},{"line_number":1716,"context_line":"example_rulematch_ct_mark \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"mangle\", \"handle\": 22}}, {\"chain\": {\"family\": \"ip\", \"table\": \"mangle\", \"name\": \"POSTROUTING\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"mangle\", \"chain\": \"POSTROUTING\", \"handle\": 4, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth2\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 0, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"mangle\": {\"key\": {\"ct\": {\"key\": \"mark\"}}, \"value\": {\"\u0026\": [{\"meta\": {\"key\": \"mark\"}}, 4294901760]}}}]}}]}\u0027"},{"line_number":1717,"context_line":"example_rulematch_ct_mark_accept \u003d \u0027{\"nftables\": [{\"metainfo\": {\"version\": \"0.9.3\", \"release_name\": \"Topsy\", \"json_schema_version\": 1}}, {\"table\": {\"family\": \"ip\", \"name\": \"nat\", \"handle\": 23}}, {\"chain\": {\"family\": \"ip\", \"table\": \"nat\", \"name\": \"SNAT\", \"handle\": 1}}, {\"rule\": {\"family\": \"ip\", \"table\": \"nat\", \"chain\": \"SNAT\", \"handle\": 2, \"expr\": [{\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"meta\": {\"key\": \"oifname\"}}, \"right\": \"eth4\"}}, {\"match\": {\"op\": \"\u003d\u003d\", \"left\": {\"ct\": {\"key\": \"mark\"}}, \"right\": {\"prefix\": {\"addr\": 305397760, \"len\": 16}}}}, {\"counter\": {\"packets\": 0, \"bytes\": 0}}, {\"accept\": null}]}}]}\u0027"},{"line_number":1718,"context_line":""},{"line_number":1719,"context_line":""},{"line_number":1720,"context_line":"class RuleTestCase(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_430ba922","line":1717,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E501 line too long (604 \u003e 79 characters)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1814,"context_line":"                         wrap\u003dFalse)"},{"line_number":1815,"context_line":"        self.assertEqual(rule, parser.rules[0])"},{"line_number":1816,"context_line":""},{"line_number":1817,"context_line":"class RuleMangleTestCase(base.BaseTestCase):"},{"line_number":1818,"context_line":""},{"line_number":1819,"context_line":"    def test_from_set_xmark(self):"},{"line_number":1820,"context_line":"        mark \u003d 0x56780000"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_a3155d42","line":1817,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E302 expected 2 blank lines, found 1","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1886,"context_line":""},{"line_number":1887,"context_line":""},{"line_number":1888,"context_line":""},{"line_number":1889,"context_line":"class NFTablesManagerTestCase(base.BaseTestCase):"},{"line_number":1890,"context_line":""},{"line_number":1891,"context_line":"    def test__apply_synchronized(self):"},{"line_number":1892,"context_line":"        ns \u003d \u0027ns101\u0027"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_83102150","line":1889,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E303 too many blank lines (5)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1892,"context_line":"        ns \u003d \u0027ns101\u0027"},{"line_number":1893,"context_line":"        nft_man \u003d nftm.NFTablesManager(namespace\u003dns)"},{"line_number":1894,"context_line":"        nft_man._apply_synchronized()"},{"line_number":1895,"context_line":"        a\u003d1"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_c3169949","line":1895,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: E225 missing whitespace around operator","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":1892,"context_line":"        ns \u003d \u0027ns101\u0027"},{"line_number":1893,"context_line":"        nft_man \u003d nftm.NFTablesManager(namespace\u003dns)"},{"line_number":1894,"context_line":"        nft_man._apply_synchronized()"},{"line_number":1895,"context_line":"        a\u003d1"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_e31bd56f","line":1895,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F841 local variable \u0027a\u0027 is assigned to but never used","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"}],"neutron/tests/unit/privileged/agent/linux/test_nftables.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import tempfile"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from oslo_serialization import jsonutils"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_281daa73","line":15,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: F401 \u0027tempfile\u0027 imported but unused","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"},{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"ab8e8e394ba90bc821f40b2af6c37d17195c93a8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from neutron.agent.linux import nftables_manager as nftm"},{"line_number":20,"context_line":"from neutron.privileged.agent.linux import nftables as priv_nftables"},{"line_number":21,"context_line":"from neutron.tests.common import net_helpers"},{"line_number":22,"context_line":"from neutron.tests import base"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class NftDeleteTestCase(base.BaseTestCase):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1f621f24_0820aeab","line":22,"updated":"2020-11-12 23:35:24.000000000","message":"pep8: H306: imports not in alphabetical order (neutron.tests.common.net_helpers, neutron.tests.base)","commit_id":"69f7ae6272065603448bb2a3600df428ad1fdf20"}]}
