)]}'
{"tripleo_ansible/roles/tripleo-firewall/handlers/main.yml":[{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"003586a0394cc406b38344500b4a1975fbe49077","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  listen: Save firewall rules"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Find non-persistent rules"},{"line_number":46,"context_line":"  command: egrep -l \u0027(neutron-|ironic-inspector)\u0027 /etc/sysconfig/iptables /etc/sysconfig/ip6tables"},{"line_number":47,"context_line":"  failed_when: false"},{"line_number":48,"context_line":"  changed_when: false"},{"line_number":49,"context_line":"  register: neutron_rules"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_eb93da5a","line":46,"updated":"2019-08-16 20:52:46.000000000","message":"Will this catch the real neutron service and ironic inspector service rules?  Previously we looked for the comments as part of https://github.com/openstack/puppet-tripleo/blob/master/manifests/firewall.pp#L158-L194","commit_id":"1bd8cb25d99f8967ef1e4907bce3eb66e5675f97"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"294ab1f82ee6edb04680b16d2b4549cc53315ce1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  listen: Save firewall rules"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Find non-persistent rules"},{"line_number":46,"context_line":"  command: egrep -l \u0027(neutron-|ironic-inspector)\u0027 /etc/sysconfig/iptables /etc/sysconfig/ip6tables"},{"line_number":47,"context_line":"  failed_when: false"},{"line_number":48,"context_line":"  changed_when: false"},{"line_number":49,"context_line":"  register: neutron_rules"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_6d86c619","line":46,"in_reply_to":"7faddb67_031acfc4","updated":"2019-08-22 15:29:31.000000000","message":"Done","commit_id":"1bd8cb25d99f8967ef1e4907bce3eb66e5675f97"},{"author":{"_account_id":14985,"name":"Alex Schultz","email":"aschultz@next-development.com","username":"mwhahaha"},"change_message_id":"afb944d99ff19cb2c437caee35c84977332e6eca","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  listen: Save firewall rules"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Find non-persistent rules"},{"line_number":46,"context_line":"  command: egrep -l \u0027(neutron-|ironic-inspector)\u0027 /etc/sysconfig/iptables /etc/sysconfig/ip6tables"},{"line_number":47,"context_line":"  failed_when: false"},{"line_number":48,"context_line":"  changed_when: false"},{"line_number":49,"context_line":"  register: neutron_rules"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_031acfc4","line":46,"in_reply_to":"7faddb67_51cf3c7e","updated":"2019-08-19 13:47:37.000000000","message":"Just to be safe, I\u0027d add the comment part as well.","commit_id":"1bd8cb25d99f8967ef1e4907bce3eb66e5675f97"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"1d023f45c8d4f40d9c32394d345ff3bd210777e5","unresolved":false,"context_lines":[{"line_number":43,"context_line":"  listen: Save firewall rules"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"- name: Find non-persistent rules"},{"line_number":46,"context_line":"  command: egrep -l \u0027(neutron-|ironic-inspector)\u0027 /etc/sysconfig/iptables /etc/sysconfig/ip6tables"},{"line_number":47,"context_line":"  failed_when: false"},{"line_number":48,"context_line":"  changed_when: false"},{"line_number":49,"context_line":"  register: neutron_rules"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_51cf3c7e","line":46,"in_reply_to":"7faddb67_eb93da5a","updated":"2019-08-17 21:08:14.000000000","message":"it should match on anything that has those strings within the comments, however, we could fence it with something like:\n\n  \u0027comment.*(neutron-|ironic-inspector)\u0027\n\nIf you think that best?","commit_id":"1bd8cb25d99f8967ef1e4907bce3eb66e5675f97"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"6abb8683b9543bb1ce6292d8cd0a5f538a924639","unresolved":false,"context_lines":[{"line_number":54,"context_line":"  lineinfile:"},{"line_number":55,"context_line":"    path: \"{{ item }}\""},{"line_number":56,"context_line":"    state: absent"},{"line_number":57,"context_line":"    regexp: \u0027(neutron-|ironic-inspector)\u0027"},{"line_number":58,"context_line":"  when:"},{"line_number":59,"context_line":"    - item.find(\u0027v\u003d\u0027 ~ \u0027^/\u0027) \u003d\u003d -1"},{"line_number":60,"context_line":"  loop: \"{{ neutron_rules.stdout_lines }}\""}],"source_content_type":"text/x-yaml","patch_set":8,"id":"7faddb67_11c5445c","line":57,"range":{"start_line":57,"start_character":12,"end_line":57,"end_character":41},"updated":"2019-08-17 21:08:52.000000000","message":"we could do the same here:\n\n  \u0027comment.*(neutron-|ironic-inspector)\u0027","commit_id":"1bd8cb25d99f8967ef1e4907bce3eb66e5675f97"}],"tripleo_ansible/roles/tripleo-firewall/tasks/main.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"655173e8d110df04412d1b8a4f18db2219ce7069","unresolved":false,"context_lines":[{"line_number":33,"context_line":"- name: Check rule set"},{"line_number":34,"context_line":"  fail:"},{"line_number":35,"context_line":"    msg: \u003e-"},{"line_number":36,"context_line":"      `{{ item[\u0027rule_name\u0027] }}` firewall rule cannot be created. TCP or UDP rules"},{"line_number":37,"context_line":"      for INPUT or OUTPUT need sport or dport defined."},{"line_number":38,"context_line":"  when:"},{"line_number":39,"context_line":"    - ((item[\u0027rule\u0027][\u0027proto\u0027] | default(\u0027tcp\u0027)) in [\u0027tcp\u0027, \u0027udp\u0027]) and"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_5e4eaec1","line":36,"range":{"start_line":36,"start_character":6,"end_line":36,"end_character":7},"updated":"2019-08-13 19:41:13.000000000","message":"just curious, what do these backticks mean?","commit_id":"e46cbc777570c3917847c6e225ffaadf8c18d35e"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"655173e8d110df04412d1b8a4f18db2219ce7069","unresolved":false,"context_lines":[{"line_number":36,"context_line":"      `{{ item[\u0027rule_name\u0027] }}` firewall rule cannot be created. TCP or UDP rules"},{"line_number":37,"context_line":"      for INPUT or OUTPUT need sport or dport defined."},{"line_number":38,"context_line":"  when:"},{"line_number":39,"context_line":"    - ((item[\u0027rule\u0027][\u0027proto\u0027] | default(\u0027tcp\u0027)) in [\u0027tcp\u0027, \u0027udp\u0027]) and"},{"line_number":40,"context_line":"      (item[\u0027rule\u0027][\u0027dport\u0027] is undefined) and"},{"line_number":41,"context_line":"      ((item[\u0027rule\u0027][\u0027chain\u0027] | default(\u0027INPUT\u0027)) !\u003d \u0027FORWARD\u0027) and"},{"line_number":42,"context_line":"      ((item[\u0027rule\u0027][\u0027table\u0027] | default(\u0027filter\u0027)) !\u003d \u0027nat\u0027)"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"7faddb67_1ec6f617","line":39,"range":{"start_line":39,"start_character":5,"end_line":39,"end_character":70},"updated":"2019-08-13 19:41:13.000000000","message":"I think \"and\"s better to do like:\n\nwhen:\n  - condition1\n  - condition2\n...\nbut not critical","commit_id":"e46cbc777570c3917847c6e225ffaadf8c18d35e"}],"tripleo_ansible/roles/tripleo-firewall/tasks/tripleo_firewall_add.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"c62b18e9ea045218632ba372f1615ab2c69e42c4","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    ip_version: ipv4"},{"line_number":59,"context_line":"    state: \"{{ tripleo_firewall_port_states[(item[\u0027rule\u0027][\u0027extras\u0027] | default({}))[\u0027ensure\u0027] | default(\u0027enabled\u0027)] }}\""},{"line_number":60,"context_line":"  when:"},{"line_number":61,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] !\u003d \u0027ipv6\u0027"},{"line_number":62,"context_line":"    - item[\u0027rule\u0027][\u0027source\u0027] | default(\u0027127.0.0.1\u0027) | ipv4"},{"line_number":63,"context_line":"  loop: \"{{ (item[\u0027rule\u0027][\u0027dport\u0027] is iterable) | ternary(item[\u0027rule\u0027][\u0027dport\u0027], [item[\u0027rule\u0027][\u0027dport\u0027]]) }}\""},{"line_number":64,"context_line":"  loop_control:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_e14fc4bb","line":61,"range":{"start_line":61,"start_character":28,"end_line":61,"end_character":37},"updated":"2019-08-13 12:12:23.000000000","message":"why not ( \u003d\u003d \u0027ipv4\u0027 ) ?","commit_id":"0f8e9a2bfc66937f1c28b2c960d2647bce4685cb"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"3bcb358cc43fabf503788a5f0f99eac023811927","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    ip_version: ipv4"},{"line_number":59,"context_line":"    state: \"{{ tripleo_firewall_port_states[(item[\u0027rule\u0027][\u0027extras\u0027] | default({}))[\u0027ensure\u0027] | default(\u0027enabled\u0027)] }}\""},{"line_number":60,"context_line":"  when:"},{"line_number":61,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] !\u003d \u0027ipv6\u0027"},{"line_number":62,"context_line":"    - item[\u0027rule\u0027][\u0027source\u0027] | default(\u0027127.0.0.1\u0027) | ipv4"},{"line_number":63,"context_line":"  loop: \"{{ (item[\u0027rule\u0027][\u0027dport\u0027] is iterable) | ternary(item[\u0027rule\u0027][\u0027dport\u0027], [item[\u0027rule\u0027][\u0027dport\u0027]]) }}\""},{"line_number":64,"context_line":"  loop_control:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_27108ca8","line":61,"range":{"start_line":61,"start_character":28,"end_line":61,"end_character":37},"in_reply_to":"7faddb67_e14fc4bb","updated":"2019-08-13 14:00:58.000000000","message":"we want this task to run on all protocols except, ipv6. This is logic being imported from the firewall manifest, and while I couldn\u0027t find anywhere in THT where this is used, I did find a protocol setting of \"ipv4\" so this change was done to ensure we have the inverse catered for.","commit_id":"0f8e9a2bfc66937f1c28b2c960d2647bce4685cb"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"7ddeca84a0100ddd8729829860238312fc885f10","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      iptables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":30,"context_line":"      EXIT_CODE\u003d99"},{"line_number":31,"context_line":"    fi"},{"line_number":32,"context_line":"    if ! iptables --list \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\"; then"},{"line_number":33,"context_line":"      ip6tables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":34,"context_line":"      EXIT_CODE\u003d99"},{"line_number":35,"context_line":"    fi"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_0da1ee46","line":32,"range":{"start_line":32,"start_character":10,"end_line":32,"end_character":17},"updated":"2019-08-13 17:21:49.000000000","message":"ip6tables","commit_id":"f3a7c82c0914637a5c30a412b20875a05d83c7c3"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"9fa768b8e1b0a5f2b75cc333d08de5cf3468198f","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      iptables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":30,"context_line":"      EXIT_CODE\u003d99"},{"line_number":31,"context_line":"    fi"},{"line_number":32,"context_line":"    if ! iptables --list \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\"; then"},{"line_number":33,"context_line":"      ip6tables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":34,"context_line":"      EXIT_CODE\u003d99"},{"line_number":35,"context_line":"    fi"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"7faddb67_e3b021e0","line":32,"range":{"start_line":32,"start_character":10,"end_line":32,"end_character":17},"in_reply_to":"7faddb67_0da1ee46","updated":"2019-08-13 18:29:37.000000000","message":"Done","commit_id":"f3a7c82c0914637a5c30a412b20875a05d83c7c3"},{"author":{"_account_id":28223,"name":"Cedric Jeanneret","display_name":"cjeanner (Tengu)","email":"cjeanner@redhat.com","username":"cjeanner"},"change_message_id":"a45d552274c0160cedcdfc4debd8c0b8ba851deb","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      iptables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":30,"context_line":"      EXIT_CODE\u003d99"},{"line_number":31,"context_line":"    fi"},{"line_number":32,"context_line":"    if ! ip6tables --list \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\"; then"},{"line_number":33,"context_line":"      ip6tables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":34,"context_line":"      EXIT_CODE\u003d99"},{"line_number":35,"context_line":"    fi"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_f51210b4","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":18},"updated":"2019-08-14 08:03:04.000000000","message":"hm... might be best to amend the still opened change that actually introduce this new role.. ?","commit_id":"3402490eae31d1a91f454fcf3907a8e8aac3f677"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"e6843f8b5787c092349d492256f03ace0cb70c3d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      iptables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":30,"context_line":"      EXIT_CODE\u003d99"},{"line_number":31,"context_line":"    fi"},{"line_number":32,"context_line":"    if ! ip6tables --list \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\"; then"},{"line_number":33,"context_line":"      ip6tables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":34,"context_line":"      EXIT_CODE\u003d99"},{"line_number":35,"context_line":"    fi"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_d6611713","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":18},"in_reply_to":"7faddb67_56268718","updated":"2019-08-14 13:51:28.000000000","message":"Done","commit_id":"3402490eae31d1a91f454fcf3907a8e8aac3f677"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"b23d0cf0c23553f7a62367ef3f18cecf05549ea5","unresolved":false,"context_lines":[{"line_number":29,"context_line":"      iptables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":30,"context_line":"      EXIT_CODE\u003d99"},{"line_number":31,"context_line":"    fi"},{"line_number":32,"context_line":"    if ! ip6tables --list \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\"; then"},{"line_number":33,"context_line":"      ip6tables -N \"{{ item[\u0027rule\u0027][\u0027chain\u0027] }}\""},{"line_number":34,"context_line":"      EXIT_CODE\u003d99"},{"line_number":35,"context_line":"    fi"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"7faddb67_56268718","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":18},"in_reply_to":"7faddb67_f51210b4","updated":"2019-08-14 13:45:04.000000000","message":"sure , I can rebase this one.","commit_id":"3402490eae31d1a91f454fcf3907a8e8aac3f677"}],"tripleo_ansible/roles/tripleo-firewall/tasks/tripleo_firewall_state.yml":[{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"c62b18e9ea045218632ba372f1615ab2c69e42c4","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- name: Set gre state fact"},{"line_number":19,"context_line":"  set_fact:"},{"line_number":20,"context_line":"    tripleo_ctstate: []"},{"line_number":21,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_419498e8","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":26},"updated":"2019-08-13 12:12:23.000000000","message":"please rename it to distinguish from tasks below","commit_id":"0f8e9a2bfc66937f1c28b2c960d2647bce4685cb"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"3bcb358cc43fabf503788a5f0f99eac023811927","unresolved":false,"context_lines":[{"line_number":15,"context_line":"# under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"- name: Set gre state fact"},{"line_number":19,"context_line":"  set_fact:"},{"line_number":20,"context_line":"    tripleo_ctstate: []"},{"line_number":21,"context_line":"  when:"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_a71b1cc8","line":18,"range":{"start_line":18,"start_character":7,"end_line":18,"end_character":26},"in_reply_to":"7faddb67_419498e8","updated":"2019-08-13 14:00:58.000000000","message":"Done","commit_id":"0f8e9a2bfc66937f1c28b2c960d2647bce4685cb"},{"author":{"_account_id":10969,"name":"Shnaidman Sagi (Sergey)","display_name":"Shnaidman Sagi","email":"sshnaidm@redhat.com","username":"sergsh"},"change_message_id":"c62b18e9ea045218632ba372f1615ab2c69e42c4","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  when:"},{"line_number":22,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] \u003d\u003d \u0027gre\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- name: Set state fact"},{"line_number":25,"context_line":"  set_fact:"},{"line_number":26,"context_line":"    tripleo_ctstate: \"{{ item[\u0027rule\u0027][\u0027ctstate\u0027] | default(item[\u0027rule\u0027][\u0027state\u0027] | default(\u0027NEW\u0027)) }}\""},{"line_number":27,"context_line":"  when:"},{"line_number":28,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] !\u003d \u0027gre\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- name: Set state fact"},{"line_number":31,"context_line":"  set_fact:"},{"line_number":32,"context_line":"    tripleo_ctstate: \"{{ item[\u0027rule\u0027][\u0027ctstate\u0027] | default(item[\u0027rule\u0027][\u0027state\u0027] | default(\u0027NEW\u0027)) }}\""},{"line_number":33,"context_line":"  when:"},{"line_number":34,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] !\u003d \u0027gre\u0027"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_e1fd843b","line":34,"range":{"start_line":24,"start_character":0,"end_line":34,"end_character":36},"updated":"2019-08-13 12:12:23.000000000","message":"duplicates?","commit_id":"0f8e9a2bfc66937f1c28b2c960d2647bce4685cb"},{"author":{"_account_id":7353,"name":"Kevin Carter","email":"kevin@cloudnull.com","username":"cloudnull"},"change_message_id":"3bcb358cc43fabf503788a5f0f99eac023811927","unresolved":false,"context_lines":[{"line_number":21,"context_line":"  when:"},{"line_number":22,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] \u003d\u003d \u0027gre\u0027"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"- name: Set state fact"},{"line_number":25,"context_line":"  set_fact:"},{"line_number":26,"context_line":"    tripleo_ctstate: \"{{ item[\u0027rule\u0027][\u0027ctstate\u0027] | default(item[\u0027rule\u0027][\u0027state\u0027] | default(\u0027NEW\u0027)) }}\""},{"line_number":27,"context_line":"  when:"},{"line_number":28,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] !\u003d \u0027gre\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"- name: Set state fact"},{"line_number":31,"context_line":"  set_fact:"},{"line_number":32,"context_line":"    tripleo_ctstate: \"{{ item[\u0027rule\u0027][\u0027ctstate\u0027] | default(item[\u0027rule\u0027][\u0027state\u0027] | default(\u0027NEW\u0027)) }}\""},{"line_number":33,"context_line":"  when:"},{"line_number":34,"context_line":"    - item[\u0027rule\u0027][\u0027proto\u0027] !\u003d \u0027gre\u0027"}],"source_content_type":"text/x-yaml","patch_set":1,"id":"7faddb67_872060f9","line":34,"range":{"start_line":24,"start_character":0,"end_line":34,"end_character":36},"in_reply_to":"7faddb67_e1fd843b","updated":"2019-08-13 14:00:58.000000000","message":"Yup, will revise.","commit_id":"0f8e9a2bfc66937f1c28b2c960d2647bce4685cb"}]}
